[英]csv writer not closing file
我正在讀取一個csv文件,然后寫一個新文件:
import csv
with open('thefile.csv', 'rb') as f:
data = list(csv.reader(f))
import collections
counter = collections.defaultdict(int)
for row in data:
counter[row[11]] += 1
writer = csv.writer(open('/pythonwork/thefile_subset1.csv', 'w'))
for row in data:
if counter[row[11]] >= 500:
writer.writerow(row)
由於某種原因,我無法讓csv.writer關閉文件。 當我打開文件時,它只打開它,因為它說它仍然是打開的。
我完成后如何關閉file_subset1.csv?
with open('/pythonwork/thefile_subset1.csv', 'w') as outfile:
writer = csv.writer(outfile)
for row in data:
if counter[row[11]] >= 500:
writer.writerow(row)
您可以將open命令分解為自己的變量,以便稍后關閉它。
f = open('/pythonwork/thefile_subset1.csv', 'w')
writer = csv.writer(f)
f.close()
如果您嘗試寫入已關閉的文件,則csv.writer
會拋出ValueError
。
關閉文件,而不是csv編寫器。 為此,您需要在實例化編寫器之前先打開文件,而不是將其全部保存在一行中。
import csv
import collections
with open('thefile.csv', 'rb') as f:
data = list(csv.reader(f))
counter = collections.defaultdict(int)
for row in data:
counter[row[11]] += 1
f.close() # good idea to close if you're done with it
fSubset = open('/pythonwork/thefile_subset1.csv', 'w')
writer = csv.writer(fSubset)
for row in data:
if counter[row[11]] >= 500:
writer.writerow(row)
fSubset.close()
此外,我建議您將導入保留在腳本的頂部,並在完成后關閉第一個文件。
強制作者清理:
del writer
看看差異:
with open('thefile.csv', 'rb') as f:
data = list(csv.reader(f))
VS:
writer = csv.writer(open('/pythonwork/thefile_subset1.csv', 'w'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.