我有一个简单的 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 行)。
当我第二次运行完全相同的脚本时,所有行都显示在子文件中(现在可以看到所有 100 行)。
即使我在第一次执行后等待几分钟,我也没有在新的 CSV 文件中获得完整的输出。 如果我简单地执行代码 2 次,我可以立即看到完整的输出。
我已经搜索过,但无法解决这个问题。 请帮助克服这个问题。
请您参考如下方法:
我随机尝试了很多不同的方法来解决这个问题,有趣的是我发现如果我们为这段代码定义一个函数,然后调用该函数,问题就会得到解决。
def create_subfile():
""" now same code as in question"""
create_subfile();
有谁知道为什么一段代码通过函数调用执行时可以正常工作,而直接执行时却不行?
