在Python中写入csv文件

时间:2013-05-25 01:06:20

标签: python csv

我的代码

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)计算文件应写入的行数。

2 个答案:

答案 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)

来自the documentation

  

模式最常用的值是'r'用于阅读,'w'用于写入(截断文件,如果文件已存在)和'a'附加(...)

如果要写入现有文件的末尾,请使用'a'以追加模式打开它。 (虽然在这种情况下,是的,重构你的循环是更好的答案。)