我的代码
i = 0
while i < len(newsymbolslist):
time = 102030
data = 895.233
array = [time], [data]
with open('StockPrice.csv', 'wb') as file:
file_writer = csv.writer(file)
file_writer.writerow(array)
file.close()
i += 1
我是 Python 的新手,所以我不是 100% 确定为什么前面的代码只将数据输入到第一行。我的猜测是,因为我每次迭代都打开文件,所以它不知道它不应该覆盖。我知道如何在理论上解决它(如果这是问题所在)。我只是在语法方面遇到了问题。
我的猜测:使用迭代 (var i) 来计算文件应该写入多少行。
请您参考如下方法:
with open('StockPrice.csv', 'wb') as f:
file_writer = csv.writer(f)
for s in newsymbolslist:
time = 102030
data = 895.233
array = [time], [data]
file_writer.writerow(array)
您的第一个猜测是正确的:每次您以 'wb' 模式打开文件时,该文件实际上被删除(如果它存在)并创建一个新的空文件。因此,只有在通过 while 循环 的最后一次迭代期间写入的内容才会影响文件的内容。
解决方案是打开文件一次(在循环开始之前)。
请注意,使用 with-statement 打开文件保证当 Python 离开 with-block 时文件将被关闭。所以不需要自己调用f.close()。
