我正在尝试使用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
正在创建但由于某种原因没有写入标题。
对于为什么会发生这种情况有任何帮助表示赞赏,谢谢。
答案 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')
作者也一样,但开始写作。