2012-01-06 4 views
1

Я пытаюсь записать в файл .tsv с помощью CSV модуль питона, это мой код до сих порPython CSV не писать в файл

file_name = "test.tsv" 
TEMPLATE = "template.tsv" 
fil = open(file_name, "w") 
# Added suggested change 
template = csv.DictReader(open(TEMPLATE, 'r'), delimiter='\t') 
new_file = csv.DictWriter(fil, fieldnames=template.fieldnames, delimiter='\t') 
new_file.writeheader() 

в основном TEMPLATE файл, который будет содержать заголовки для файла , поэтому я читаю заголовки, используя DictReader и передаю имена полей DictWriter, насколько я знаю, код в порядке, создается файл test.tsv, но по какой-то причине заголовки не записываются.

Любая помощь относительно того, почему это происходит, ценится, спасибо.

ответ

4

Первый аргумент DictReader должен быть файловым объектом (создать с помощью open()), ср. http://docs.python.org/py3k/library/csv.html#csv.DictReader

Вы забыли open() для файла TEMPLATE.

import csv 

file_name = "test.tsv" 
TEMPLATE = "template.tsv" 
fil = open(file_name, "w") 

# you forgot this line, which will open the file 
template_file = open(TEMPLATE, 'r') 

template = csv.DictReader(template_file, delimiter='\t') 
new_file = csv.DictWriter(fil, fieldnames=template.fieldnames, delimiter='\t') 
new_file.writeheader() 
+0

Я сделал предлагаемое изменение, однако файл по-прежнему пуст – Paulo

+0

, похоже, работает на сервере, поэтому я принимаю это как ответ – Paulo

0

Попытка дать DictReader открытого файла вместо имени файла:

csv.DictReader(open(TEMPLATE, 'r'), delimiter='\t') 

же для писателя, но открыт для записи.

Смежные вопросы