csv.writer:需要运行循环,但在一次迭代后停止

时间:2018-03-26 19:29:39

标签: python loops csv time

我试图从API中提取。如果编码为运行一次,则文件运行正常。但是编码为每分钟运行一次(x[5]==0)时遇到问题。该程序确实从API中提取(由<print(i)>证明),但似乎与CSV文件不相互作用。

import csv
import time

c = open("file.csv", "a")
w = csv.writer(c, lineterminator="\n")

while True:
  x = time.localtime()
    if x[5]==0:

      client.request(r)
      print(i)
      for i in r.response["list"]
      w.writerow([i["list_item1"], i["list_item2"]])

程序将循环遍历print,但不会写入"file.csv"。我尝试将CS​​V文件设为close

      client.request(r)
      print(i)
      for i in r.response["list"]
      w.writerow([i["list_item1"], i["list_item2"]])
      c.close()

这样,程序将循环一次,写入"file.csv"一次,然后关闭并出现以下错误:

    w.writerow([i["list_item1"], i["list_item2"]])
ValueError: I/O operation on closed file.

我尝试在几个地方添加with语句,但我无法正常工作。

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

你的代码看起来很好。你不需要c.close()

只需在代码末尾添加c.flush()即可。 因为你有无限的while循环,你只需要将数据刷新到你的csv文件中。

希望这可以解决您的问题。

 Note flush() does not necessarily write the file’s data to disk. Use flush() followed by os.fsync() to ensure this behavior. 

阅读此file.flush