При запуске этого простого скрипта «output_file.csv» остается открытым. Я не уверен, как закрыть файл в этом сценарии.Python Script Не удается найти файл-объект для закрытия
Я рассмотрел другие примеры, в которых функция open() назначается переменной, такой как 'f', и объект закрывается с помощью f.close(). Из-за with
/как csv-file
, я не понимаю, где находится файл. Кто-нибудь мог бы концептуально объяснить, где отключиться? В идеале, хотелось бы знать:
- как проверить пространство имен для всех открытых файлов объектов
- как определить правильный метод для закрытия этих объектов
простой скрипт для чтения столбцов данных, где отображение в колонке 1 заполняется, заполняется
import csv
output_file = csv.writer(open('output_file.csv', 'w'))
csv.register_dialect('mydialect', doublequote=False, quotechar="'")
def csv_writer(data):
with open('output_file.csv',"ab") as csv_file:
writer = csv.writer(csv_file, delimiter=',', lineterminator='\r\n', dialect='mydialect')
writer.writerow(data)
D = [[]]
for line in open('inventory_skus.csv'):
clean_line = line.strip()
data_points = clean_line.split(',')
print data_points
D.append([line.strip().split(',')[0], line.strip().split(',')[1]])
D2 = D
for i in range(1, len(D)):
nr = D[i]
if D[i][0] == '':
D2[i][0] = D[i-1][0]
else:
D2[i] = D[i]
for line in range(1, len(D2)):
csv_writer(D2[line])
print D2[line]
Вы делаете ненужный явный 'open' в верхней части скрипта, и вы его не закрываете. Итак, почему вы удивлены тем, что файл остается открытым? – BartoszKP
Возможный дубликат [python csv - не закрывающий файл] (http://stackoverflow.com/questions/3347775/python-csv-not-closing-file) – BartoszKP
Сначала я попытался помещать output_file.close() в конец, но am получение этой ошибки: output_file.close() Объект AttributeError: '_csv.writer' не имеет атрибута 'close' удаление исходного файла output_file = csv.writer (open ('output_file.csv', 'w')) все еще заставил файл оставаться открытым – Jonathan