python
  • file-io
  • csv
  • 2012-01-06 169 views 1 likes 
    1

    我试图写使用Python的CSV模块.tsv文件,这是我到目前为止的代码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 2012-01-06 07:09:52

    +0

    它似乎是在服务器上工作,所以生病接受这个答案 – Paulo 2012-01-06 09:31:24

    0

    尽量给DictReader打开的文件,而不是文件名:

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

    同为作家,但开放的写作。

    相关问题