2016-10-06 17 views
0

私はそこに.txtファイルを含むフォルダを持っています。私のコードは、これらのファイルのそれぞれで行数と文字数を見つけ、各ファイルの出力を別のディレクトリの単一のcsvファイルに保存します。 csvファイルはLinecount.csvです。何らかの理由で、出力を印刷すると正しい結果が得られますが、csvファイルへの出力は文字と最終出力の繰り返しで繰り返されます。 printステートメントの出力は正しいです。Pythonのforループの出力をCSVファイルに追加する

csvファイルの場合はありません。

import glob 
import os 
import csv 

os.chdir('c:/Users/dasa17/Desktop/sample/Upload') 

for file in glob.glob("*.txt"): 
    chars = lines = 0 
    with open(file,'r')as f: 
     for line in f: 
     lines+=1 
     chars += len(line) 
    a=file 
    b=lines 
    c=chars 
    print(a,b,c) 

    d=open('c:/Users/dasa17/Desktop/sample/Output/LineCount.cs‌​v', 'w') 
    writer = csv.writer(d,lineterminator='\n') 
    for a in os.listdir('c:/Users/dasa17/Desktop/sample/Upload'): 
     writer.writerow((a,b,c)) d.close() 
+0

輸入グロブ 輸入OS インポートCSV os.chdir( 'C:/ユーザー/ dasa17 /デスクトップ/サンプル/アップロード'glob.globにファイル( "* TXT" の場合) ):オープン(ファイルと \t文字=ライン= 0 \t' FとしてR '): \t \tはラインのFで: \t \t \tライン+ = 1 \t \t \t文字+ = LEN(ライン) \t \t =ファイル \t \t B =線 \t \tのC =の文字 \t \tプリントオープン(A、B、C) \t \t D =( 'C:/Users/dasa17/Desktop/sample/Output/LineCount.csv' os.listdirにするため、 'W') \t \tライター= csv.writer(D、lineterminator = '\ n') \t \t ( 'c:/ Users/dasa17/Desktop/sample/Upload'): \t \t \t writer.writerow((A、B、C)) \t \t d.close() –

+4

質問を編集して、そこにあなたのコードを含めてください。コメントとして読むことは不可能 – maillard

+2

あなたは、それを行うのが合理的なようなコメントの中にあなたのコードを投稿すると思うのはなぜですか? –

答えて

0

インデントを確認してください。

あなたはこれがab、およびcの最後の結果を格納するfor file in glob.glob("*.txt"):

を使用して、各ファイルをループしています。それはどこにでも書いているようではありません。

その後、各アイテムをループfor a in os.listdir('c:/Users/dasa17/Desktop/sample/Upload'):を使用して、店舗aこのループ(ファイル名)から、初期ループからbcの最後の値。

私が実行していませんでしたが、次のように並べ替えすると、この問題を解決することがあります。

import glob 
import os 
import csv 

os.chdir('c:/Users/dasa17/Desktop/sample/Upload') 
d=open('c:/Users/dasa17/Desktop/sample/Output/LineCount.cs‌​v', 'w') 
writer = csv.writer(d,lineterminator='\n') 

for file in glob.glob("*.txt"): 
     chars = lines = 0 
     with open(file,'r') as f: 
       for line in f: 
       lines+=1 
       chars += len(line) 
     a=file 
     b=lines 
     c=chars 
     print(a,b,c) 
     writer.writerow((a,b,c)) 
d.close() 
+0

ありがとう、私はそれを考え出した:) –

関連する問題