加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 当我写它时,CSVWriter不保存数据到文件

发布时间:2020-12-20 10:34:04 所属栏目:Python 来源:网络整理
导读:Python新手对csv模块感到有点沮丧.按照这个速度,如果我自己编写文件解析器会更容易,但我想用Pythonic方式做事…. 我写了一个小python脚本,应该将我的数据保存到CSV文件中. 这是我的代码片段: import csvwrtr = csv.writer(open('myfile.csv','wb'),delimite
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,quotechar='"')
    for row in rows:
        wrtr.writerow([row.field1,row.field3])
        myfile.flush() # whenever you want

要么

myfile = open('myfile.csv','wb')
wrtr = csv.writer(myfile,quotechar='"')
for row in rows:
    wrtr.writerow([row.field1,row.field3])
    myfile.flush() # whenever you want,and/or
myfile.close() # when you're done.

关于第一种方法的好处是,如果出现异常,您的文件也将自动正确关闭.

如果您希望文件对象是匿名的,那么只有在程序退出时才会关闭它.何时或是否刷新取决于操作系统 – 因此它可能永远不会退出.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读