Python CSV не пишет в файл - PullRequest
       3

Python CSV не пишет в файл

1 голос
/ 06 января 2012

Я пытаюсь записать в файл .tsv, используя CSV-модуль python, пока это мой код

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 создается, но по какой-то причине заголовки не пишутся.

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

Ответы [ 2 ]

4 голосов
/ 06 января 2012

Первым аргументом 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 голосов
/ 06 января 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...