【发布时间】:2016-08-22 07:44:25
【问题描述】:
我有一个简单的 Python 脚本,它在读取一个大的 CSV 文件后写入一个子 (CSV) 文件。
import csv
import os
large_file = "D:\Total_data.csv"
with open(large_file, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter='|')
path = "D:/CSV_Files/"
if not os.path.exists(path):
os.makedirs(path)
writer1 = csv.writer(open(path+"A1_subfile"+".csv", 'wb'), delimiter = '|')
#writing data to the CSV file only if first column has value 'A1'
for row in reader:
if (row[0]=='A1'):
writer1.writerow(row)
csvfile.close()
我面临的问题是,当我第一次运行脚本时,有些行没有出现在 A1_subfile.csv 文件中(比如 100 行中只显示了 96 或 97 行)。
当我第二次运行完全相同的 SAME 脚本时,所有行都显示在子文件中(现在可以看到所有 100 行)。
即使我在第一次执行后等待几分钟,我也没有在新的 CSV 文件中获得完整的输出。 如果我简单地执行代码 2 次,我可以立即看到完整的输出。
我已经搜索过,但无法解决这个问题。 请帮助解决这个问题。
【问题讨论】:
-
为什么你用
with打开一个文件而不是另一个?确保正确关闭文件。 -
抱歉,即使使用了 flush() 和 close() 方法,问题仍然存在,如其他答案中所述