2012-01-06 4 views
1

をファイルに書いていない、これはこれまでのところ私のコードですPythonの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が作成されていますが、何らかの理由でヘッダーが書き込まれていません。

これがなぜ起こっているかについてのお手伝いはありがたいです、ありがとうございます。

答えて

4

DictReaderの最初の引数はファイルオブジェクト(open()で作成)でなければなりません。 http://docs.python.org/py3k/library/csv.html#csv.DictReader

TEMPLATEファイルの場合はopen()を忘れました。 DictReaderを与えるために

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

+0

サーバー上で動作しているようですので、これを回答として受け入れます – Paulo

0

てみファイル名の代わりにファイルを開く:作家のための

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

同じだが、書き込みのために開かれました。

関連する問題