2017-01-12 21 views
1

フォルダ内のファイルを繰り返し処理しようとしていますが、コードは常に1つのファイル(現在は2つのファイル)で実行されています。プログラムはtxtファイルを開き、それをPythonリストに変換し、リストを新しい作成ファイル(それぞれ別々に)に書き込む必要があります。私はバグだけを見つけることができません。pythonがファイルを反復処理してtxtに追加する

import io 
import os 

'''printing program directory''' 
ANVCONDA_directory = os.path.dirname(os.path.realpath(__file__)) + os.sep 

print ANVCONDA_directory 


inputdir = ANVCONDA_directory + "TEMP" 
print os.listdir(inputdir) 


'''counting files in folder''' 
path, dirs, files = os.walk(inputdir).next() 
file_count = len(files) 
print file_count 


for filename in os.listdir(inputdir): 



#opening txt file to extract data 
with io.open(inputdir + "\\" + filename, "r", encoding="cp1250") as file: 
    ocr_results = [line.strip() for line in file] 


#spliting into list  
for line in ocr_results: 
    print("[" + line + "]") 

#writing list to file 
import pickle 

with open('outfile' + filename, 'wb') as fp: 
    pickle.dump(ocr_results, fp) 
+1

インデントを確認してください。 '( 'outfile' + filename、 'wb')をfp:'としたファイルは、os.listdir(inputdir)の 'for filename 'の中にありません:' –

+0

また、一貫した字下げを保つようにしてください。 –

+0

)1.モジュールの上部に 'pickle pick 'があります。あなたはインデントレベルと一致する必要があります。どこにでも4つのスペース/ 1つのタブを使用してください。私はいくつかの不一致を見る。 – mmenschig

答えて

1

出力を書き込んでいるコードブロックのインデントが間違っているようです。それはforループ内になければなりません。現在はループの外側にあるので、上のループが終了した後にのみ実行されます。

os.listdirには、サブディレクトリを含むフォルダ内のすべてが含まれています。ディレクトリをスキップする場合は、os.isdirを参照することをお勧めします。