CSVWriter在我写入数据时未将数据保存到文件
Python新手对csv模块感到有点沮丧。以这种速度,如果我自己编写文件解析器会更容易,但是我想用Pythonic的方式做事情。
我写了一个小python脚本,应该将我的数据保存到CSV文件中。
这是我的代码片段:
import csv
wrtr = csv.writer(open('myfile.csv','wb'),delimiter=',', quotechar='"')
for row in rows:
wrtr.writerow([row.field1,row.field2,row.field3])
文件myfile.csv已成功创建,但为空-但已锁定,因为Python进程仍在使用它。似乎数据已写入内存中的文件,但尚未刷新到磁盘。
由于Python进程在文件上持有锁,因此我假设我负责释放锁。这是我的问题:
- 我如何让python刷新到磁盘
- 如何关闭在csv.writer()方法中打开的文件?
-
采用
with open('myfile.csv','wb') as myfile: wrtr = csv.writer(myfile, delimiter=',', quotechar='"') for row in rows: wrtr.writerow([row.field1,row.field2,row.field3]) myfile.flush() # whenever you want
要么
myfile = open('myfile.csv','wb') wrtr = csv.writer(myfile, delimiter=',', quotechar='"') for row in rows: wrtr.writerow([row.field1,row.field2,row.field3]) myfile.flush() # whenever you want, and/or myfile.close() # when you're done.
第一种方法的好处是,在发生异常的情况下,文件也会自动正确关闭。
如果您希望文件对象是匿名的,则仅在程序退出时将其关闭。什么时候刷新或是否刷新取决于操作系统-因此可能永远不会退出。