【问题标题】:Why Python script has to be executed 2 times to get complete output in the CSV file为什么 Python 脚本必须执行 2 次才能在 CSV 文件中获得完整输出
【发布时间】: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 次,我可以立即看到完整的输出。

我已经搜索过,但无法解决这个问题。 请帮助解决这个问题。

【问题讨论】:

标签: python csv


【解决方案1】:

我随机尝试了很多不同的方法来解决这个问题,有趣的是我发现如果我们为这段代码定义一个函数,然后调用该函数,问题就会得到解决。

def create_subfile():

     """ now same code as in question"""

create_subfile();

有谁知道为什么一段代码通过函数调用执行时可以正常执行,而直接执行时无法执行?

【讨论】:

  • 说真的,关闭输出文件或使用输出文件的上下文管理器将解决问题。
  • 我也关闭了输出文件。但是代码只有在函数内部编写时才有效。不知道这种“奇怪”解决方案的原因
  • 我可以知道谁对这个答案投了反对票,为什么?我知道这是一个奇怪的解决方案,但它是问题的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多