繁体   English   中英

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

[英]Python - csv file is empty after using csv writer

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()

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

我对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 中看到您想要的内容

希望这有帮助

这对派对来说有点晚了,但是我在单个评论之外还没有看到的解决方案是使用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'])

我过去使用过这个,没有任何问题。

该代码有效。 您确定您的操作系统不只是将 CSV 大小四舍五入——毕竟,它只会是几个字节!

您可以尝试print(open("eggs.csv").read())以查看文件是否实际上是空的,或者more eggs.csv

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM