устройство записи csv не заключительный файл

Я читаю файл 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 закрывать файл. когда я открываю файл, он открывает его как ТОЛЬКО ДЛЯ ЧТЕНИЯ, потому что он говорит, что это все еще открыто.

как я закрываю thefile_subset1.csv после того, как я буду сделан с ним?

18
задан BartoszKP 29 April 2015 в 18:04
поделиться

4 ответа

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)
28
ответ дан 30 November 2019 в 06:07
поделиться

Вы можете вынести команду open в отдельную переменную, чтобы потом закрыть ее.

f = open('/pythonwork/thefile_subset1.csv', 'w')
writer = csv.writer(f)
f.close()

csv.writer выбрасывает ValueError при попытке записи в закрытый файл.

23
ответ дан 30 November 2019 в 06:07
поделиться

Посмотрите на разницу:

with open('thefile.csv', 'rb') as f:
    data = list(csv.reader(f))

vs:

writer = csv.writer(open('/pythonwork/thefile_subset1.csv', 'w'))
-1
ответ дан 30 November 2019 в 06:07
поделиться

Заставить писателя очистить:

del writer
3
ответ дан 30 November 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: