Python csv没有写入文件

时间:2012-01-06 05:39:13

标签: python file-io csv

我正在尝试使用python的CSV模块写入.tsv文件,这是我目前为止的代码

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 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

尝试给DictReader打开文件而不是文件名:

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

作者也一样,但开始写作。