2011-09-30 3 views
2

現在この作業に取り掛かっています。あなたのアドバイスを教えてください。私が下に書いているコードは、複数のフォルダから.txtファイル名だけを返しますが、各.txtファイルの内容を出力し、Excelの別の行に保存したいと思います。各.txtファイルの内容は数字です。Python:複数のフォルダ内のすべてのテキストファイルの内容を読み込んで1つのExcelファイルに保存する方法

import os, glob,xlwt 
#create workbook and worksheet 
wbk = xlwt.Workbook() 
sheet = wbk.add_sheet('data') 
path= 'E:\Cag\Data' 
row = 0 
for dir,subdir,files in os.walk(path): 
    for file in files: 
     if glob.fnmatch.fnmatch(file, '*.txt'): 
      L = file.strip() 
      sheet.write(row,5,L) 
      row += 1 
wbk.save('read_all_txt_in_folders.xls') 
print 'success' 
+0

globから直接使用する代わりに、fnmatchを直接インポートする必要があります。 – Simon

+0

'L = file.strip()'は何をすると思いますか? –

+0

変数名として組み込み関数名( 'file')を使用しないでください。あなたのプログラムを読んでいる人には混乱します。また、大文字の変数名( 'L')は混乱します。最後に、一文字の変数名は混乱します。意味のある小文字の名前を使用してください。 –

答えて

2

まあ、あなたがそれらを書くので、ファイル名が表示されます。ファイル名はLです。 (L = file.strip()は私には不要です)

ファイルの内容を書きたい場合は、代わりにL = open(os.path.join(dir, file), "r").read()を実行する必要があります。

+0

ええ、これは私が欲しいものです。私はそれを試して、このエラーを返しました:トレースバック(最新の最後の呼び出し): ファイル "E:\ read_all_txt_in_folders.py"、15行目、 L = open(ファイル、 'r')。read() IOError :[Errno 2]そのようなファイルやディレクトリはありません: 'ttt.txt'。 ttt.txtがフォルダにあり、なぜこのエラーが出力されますか?ありがとう – Ricky

+0

IIRCあなたは完全なパスを取得するために 'dir'(または' subdir'?)と 'file'を連結する必要があります。 – eudoxos

+0

@eudoxos:私は少し明確に説明できますか? – Ricky

2

あなたはファイルの内容を書きたい場合は、あなたが行う必要があります代わりに

with open(os.path.join(dir, file), "r") as source: 
    L= source.read() 

これは、あなたがそれらを読んで完了したら、ファイルが実際に閉じていることを保証します。これにより、システムリソースが解放されます。

+0

うん。 glglglが私に見せたように動作します。ありがとう – Ricky

関連する問題