python
  • file-io
  • csv
  • 2012-01-06 162 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') 
    

    同爲作家,但開放的寫作。

    相關問題