我试图从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
语句,但我无法正常工作。
我怎样才能让它发挥作用?
答案 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