CSV.Writer:需要运行循环,但它在一次迭代后停止



我试图从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"。我试图将CSV文件发送到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语句,但我无法工作。

我该如何工作?

您的代码看起来不错。您不需要c.close()

只需在代码末尾添加c.flush()即可。循环时,您只需要将数据冲入您的CSV文件。

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

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

阅读此文件。Flush

最新更新