ValueError: операция ввода-вывода в закрытом файле
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)
Здесь p
- словарь, w
и c
- это строки.
Когда я пытаюсь записать в файл, он сообщает об ошибке:
ValueError : I/O operation on closed file.
Помогите мне, я действительно новичок в python. Я работаю с Python 2.7.3
Заранее спасибо.
Ответы
Ответ 1
Отступ правильно; 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
Ответ 2
Та же ошибка может возникнуть при смешивании: табуляции + пробелы.
with open('/foo', 'w') as f:
(spaces OR tab) print f <-- success
(spaces AND tab) print f <-- fail
Ответ 3
печать должна быть предназначена внутри цикла "с":
@app.route("/sheet", methods=["GET"])
def get_sheet():
with open ("survey.csv", "r") as new_file:
csv_reader = csv.reader(new_file)
for line in new_file:
first= line[0]
last= line[1]
return render_template("sheet.html", first=first, last=last)