2011-07-06 11 views
0

以下のコードは、 'textpath'ディレクトリ内の1つのファイルのみを処理しています。 "for .. in ..:"文を使用しているので、ディレクトリ内のすべてのファイルを処理する必要があります。私はPython初心者ですので、どんな助けでも本当に感謝しています!Python - ディレクトリ内のすべてのファイルを処理していないコード

textpath = "C:\Users\SL\Documents\FF Project\scratchpad\Text" 
newpath = "C:\Users\SL\Documents\FF Project\scratchpad\TextFiles" 
text2breaks = os.listdir(textpath) 

for text2break in text2breaks: 
    file = os.path.join(textpath, text2break) 
    textfile=open(file) 
    textFileContent=textfile.read() 
    textFileList = re.split("[0-9]{1,2} of [0-9]{1,4} DOCUMENTS", textFileContent) 
    for item in sorted(set(textFileList)): 
     listpos = textFileList.index(item) 
     resultsfilename = os.path.join(newpath, text2break[:-4] + "_" + str(listpos) + ".txt") 
     resultsfile = open(resultsfilename, "w") 
     resultsfile.writelines(item) 
     resultsfile.close() 
+1

コードを正しくインデントしてください。 **あなたの質問を**編集し、ページの右側に書式設定ガイドラインをお読みください。 –

+0

'sort(set(textFileList))'の結果は何ですか?それは複数のエントリを持っていますか? – AlG

+0

質問の書式設定が正しいことを確認してください。特に 'Python'のような空白に敏感なコードでは、コード、機能、エラーの可能性を損なうことなくフォーマットを改善するのは難しいです。インデントエラーのためにフォーマットしたコードを確認してください。 – Bobby

答えて

0

textfile=open(file)そのループの外

あなたのループは、このようなものでなければなりませんので、文は繰り返しの最後の値だけを取ります。

for text2break in text2breaks: 
    file = os.path.join(textpath, text2break) 
    textfile=open(file) 
    textFileContent=textfile.read() 
    textFileList = re.split("[0-9]{1,2} of [0-9]{1,4} DOCUMENTS", textFileContent) 

EDIT:編集した質問はその

に対処すべきです
+0

そのおかげで、ありがとうございました。私は問題を修正しました。とても有難い。 – user831880

+0

そして、フォーマットの問題のためのお詫び - 私の最初の時間はstackoverflow.comを使用しているので、コードを書式設定する前に投稿しました。 – user831880

関連する問題