我有一些 CSV 文件,我必须通过循环修改这些文件。该代码循环遍历源文件,读取每一行,进行一些修改,然后将输出保存到另一个 CSV 文件。为了检查我的工作,我希望将第一行和最后一行保存在另一个文件中,以便我可以确认没有跳过任何内容。
我所做的是将所有行放入一个列表中,然后从索引减 1 中获取最后一行。这可行,但我想知道是否有一种更优雅的方法来完成此操作。
代码示例:
def CVS1():
fb = open('C:\\HP\\WS\\final-cir.csv','wb')
check = open('C:\\HP\\WS\\check-all.csv','wb')
check_count = 0
check_list = []
with open('C:\\HP\\WS\\CVS1-source.csv','r') as infile:
skip_first_line = islice(infile, 3, None)
for line in skip_first_line:
check_list.append(line)
check_count += 1
if check_count == 1:
check.write(line)
[CSV modifications become a string called "newline"]
fb.write(newline)
final_check = check_list[len(check_list)-1]
check.write(final_check)
fb.close()
最佳答案
如果您确实需要 check_list
来做某事,那么,正如其他答案所建议的那样,使用 check_list[-1]
相当于但优于 check_list[ len(check_list)-1]
.
但是你真的需要这个列表吗?如果您只想跟踪第一行和最后一行,那么您不需要。如果您专门跟踪第一行,并在进行过程中跟踪当前行,那么最后,第一行和当前行就是您想要的。
事实上,由于您似乎一看到第一行就将其写入 check
中,因此您不需要跟踪除当前行之外的任何内容。当前行,您已经知道了,它是 line
。
所以,让我们删除所有其他内容:
def CVS1():
fb = open('C:\\HP\\WS\\final-cir.csv','wb')
check = open('C:\\HP\\WS\\check-all.csv','wb')
first_line = True
with open('C:\\HP\\WS\\CVS1-source.csv','r') as infile:
skip_first_line = islice(infile, 3, None)
for line in skip_first_line:
if first_line:
check.write(line)
first_line = False
[CSV modifications become a string called "newline"]
fb.write(newline)
check.write(line)
fb.close()
关于Python-如何获取循环中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25280663/