【问题标题】:Python csv not writing to filePython csv没有写入文件
【发布时间】:2012-01-06 05:39:13
【问题描述】:

我正在尝试使用 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,据我所知代码很好,文件@ 987654325@ 正在创建,但由于某种原因,没有写入标题。

感谢任何有关为什么会发生这种情况的帮助,谢谢。

【问题讨论】:

    标签: python file-io csv


    【解决方案1】:

    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()
    

    【讨论】:

    • 我已经进行了建议的更改,但是文件仍然是空的
    • 它似乎在服务器上工作,所以我不能接受这个作为答案
    【解决方案2】:

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

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

    作者也一样,但可以写作。

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 2017-04-25
      • 2021-05-07
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多