ValueError : I/O operation on closed file
--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Horror Game Menu Looping
--
Chapters
00:00 Valueerror : I/O Operation On Closed File
00:26 Accepted Answer Score 228
00:46 Answer 2 Score 11
01:02 Answer 3 Score 1
01:29 Answer 4 Score 0
01:44 Answer 5 Score 0
02:04 Thank you
--
Full question
https://stackoverflow.com/questions/1895...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #csv #fileio #io
#avk47
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Horror Game Menu Looping
--
Chapters
00:00 Valueerror : I/O Operation On Closed File
00:26 Accepted Answer Score 228
00:46 Answer 2 Score 11
01:02 Answer 3 Score 1
01:29 Answer 4 Score 0
01:44 Answer 5 Score 0
02:04 Thank you
--
Full question
https://stackoverflow.com/questions/1895...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #csv #fileio #io
#avk47
ACCEPTED ANSWER
Score 231
Indent correctly; your for statement should be inside the with block:
import csv
with open('v.csv', 'w') as csvfile:
cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for w, c in p.items():
cwriter.writerow(w + c)
Outside the with block, the file is closed.
>>> with open('/tmp/1', 'w') as f:
... print(f.closed)
...
False
>>> print(f.closed)
True
ANSWER 2
Score 11
Same error can raise by mixing: tabs + spaces.
with open('/foo', 'w') as f:
(spaces OR tab) print f <-- success
(spaces AND tab) print f <-- fail
ANSWER 3
Score 0
file = open("filename.txt", newline='')
for row in self.data:
print(row)
Save data to a variable(file), so you need a with.
ANSWER 4
Score 0
I had this problem when I was using an undefined variable inside the with open(...) as f:.
I removed (or I defined outside) the undefined variable and the problem disappeared.