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])
Run Code Online (Sandbox Code Playgroud)
文件myfile.csv是成功创建的,但是它是空的 - 但它有一个锁定,因为它仍然被Python进程使用.似乎数据已写入内存中的文件,但尚未刷新到磁盘.
由于Python进程持有文件锁,所以我认为我负责释放锁.这是我的问题:
Tim*_*ker 60
使用
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
Run Code Online (Sandbox Code Playgroud)
要么
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.
Run Code Online (Sandbox Code Playgroud)
关于第一种方法的好处是,如果出现异常,您的文件也将自动正确关闭.
如果您希望文件对象是匿名的,那么只有在程序退出时才会关闭它.何时或是否刷新取决于操作系统 - 所以它可能永远不会退出.
在flush()
与close()
该方法的文件对象.或者使用with
.