2013-09-23 17 views
48
import csv  

with open('v.csv', 'w') as csvfile: 
    cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) 

for w, c in p.iteritems(): 
    cwriter.writerow(w + c) 

pwc両方が文字列で、辞書です。とValueError:ここで閉じられたファイルのI/O操作

私はそれがエラーを報告し、ファイルに書き込みをしようとすると:私を助けて

ValueError : I/O operation on closed file. 

、私のpythonには本当に新しいです。私はPython 2.7.3で作業しています ありがとうございます。

答えて

76

正しくインデントされます。 for文はwithブロック内にある必要があります:

import csv  

with open('v.csv', 'w') as csvfile: 
    cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) 

    for w, c in p.iteritems(): 
     cwriter.writerow(w + c) 

withブロックの外で、ファイルが閉じられています。

>>> with open('/tmp/1', 'w') as f: 
...  print f.closed 
... 
False 
>>> print f.closed 
True 
+0

ありがとうございます!あなたは私に無駄な努力の時間を節約しました:) – Learner23

+0

このエラーが何度も見つかったとは信じられません!! – user1767754

関連する問題