我的代码
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很新,所以我不能完全确定为什么以前的代码只将数据输入到第一行。我的猜测是,因为我正在打开并且每次迭代它都不知道它不会覆盖。我知道如何在理论上解决它(如果这是问题)。我只是在语法上遇到了麻烦。
我的猜测:使用迭代(var i)计算文件应写入的行数。
答案 0 :(得分:4)
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-loop
的最后一次迭代期间写入的内容才会影响文件的内容。
解决方案是打开文件一次(在循环开始之前)。
请注意,使用with-statement打开文件可确保在Python离开with-block
时文件将被关闭。因此,您无需亲自致电f.close()
。
答案 1 :(得分:2)
模式最常用的值是
'r'
用于阅读,'w'
用于写入(截断文件,如果文件已存在)和'a'
附加(...)
如果要写入现有文件的末尾,请使用'a'
以追加模式打开它。 (虽然在这种情况下,是的,重构你的循环是更好的答案。)