Python - 使用csv writer后csv文件为空

时间:2010-10-09 15:40:57

标签: python csv

Python新手在这里。我试图解决在更大的程序中编写csv文件的问题,并决定回到基础以尝试找到问题。

我从Python csv读取和编写文档中运行了一个确切的代码示例:

import csv     
spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ', quotechar='|')    
spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

当我进入我的工作目录并点击“eggs.csv”时,文件为空则报告为“0 kb”。同样的事情发生在我的大型程序(空csv文件)中。我错过了一些完全明显的东西吗?

谢谢!

修改
我刚刚尝试将代码修改为:

import csv
csvOut=open("eggs.csv", "wb")
spamWriter = csv.writer(csvOut, delimiter=' ', quotechar='|')
spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
csvOut.close()

这很有效。我不确定为什么第一个对我不起作用。

5 个答案:

答案 0 :(得分:11)

我不太熟悉csv模块,但这看起来像文件IO问题而不是csv问题。

你在文件中看不到任何内容的原因是python仍然打开了文件。你需要关闭它。

所以不要这样做:

spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ', quotechar='|')

请改为:

f = open('eggs.csv', 'w')
spamWriter = csv.writer(f, delimiter=' ', quotechar='|')
# the rest of your code
f.close()

现在你应该在eggs.csv中看到你想要的东西

希望这有帮助

答案 1 :(得分:3)

这对于聚会来说有点晚了,但是我还没有看到一个解决方案,可以使用withas。在这种情况下,它可能看起来像:

import csv     
with csv.writer(open('eggs.csv', 'w'), delimiter=' ', quotechar='|') as spamWriter:   
    spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

我过去没有任何问题地使用过它。

答案 2 :(得分:0)

该代码有效。你确定你的操作系统不只是简化了CSV大小 - 毕竟,它只是几个字节!

您可以尝试print(open("eggs.csv").read())查看文件是否实际为空,或者从命令行查看more eggs.csv

答案 3 :(得分:0)

您发布的代码非常适合我。

您确定运行该脚本的目录实际上是您正在检查的目录吗? (你每次尝试之前都删除“eggs.gsv”吗?)

答案 4 :(得分:0)

我在python解释器中尝试过这个。在第一段代码中,我只在退出python之后才看到csv中的内容(当文件关闭时)。当然,这与关闭文件有关。