我有几个大的csv文件,我按顺序打开处理每一行,然后将结果写入一个csv文件,我的代码如下(我在Debian 9btw上使用python3.5):
with open("coutput.csv", "w") as outf:
## csv_file_names is a list of csv files' paths
for file_name in csv_file_names:
with open(file_name) as inf:
for line in inf:
## processing the line's data
....
## processed data is then stored in processed_line(as an str object)
outf.write(processed_line)
问题是,在上一次迭代中,processed_line
似乎没有被写入output.csv
;换言之,output.csv
的行数少于它应该拥有的行数(大约最后10行没有被写入)。当我通过在第一个outf.flush
的末尾添加outf.flush
来修改代码时,每件事情都可以正常工作(没有遗漏行)。在
所以我要问,flush
应该一直用在(文件)上下文管理器的末尾吗?在
这是关于离开
with
的嵌套部分。 当with
结束时,缓冲区将被清除,文件将关闭:print(1)
位于with
>;文件仍处于打开状态且未刷新print(2)
在with
>;文件现在被刷新并关闭相关问题 更多 >
编程相关推荐