2016-07-19 13 views
0

私は現在、.iniファイルから複数のディレクトリを探し、それらを印刷して新しいディレクトリにコピーするコードを作成しています。私は、ファイルを印刷するforループが5回実行されたときに1回だけ実行するという問題に遭遇しました。どのように私はそれが呼び出されるたびにforループが動作するように修正できますか?Python forループは一度だけ実行されます

コード:

def copyFiles(path): 
    rootPath = path 
    print(rootPath) 
    pattern = "*.wav" 
    search = "" 

    #searches the directories for the specified file type then prints the name 
    for root, dirs, files in os.walk(rootPath): 
     for filename in fnmatch.filter(files, pattern): 
      print(filename) 

def main(): 
    #opens the file containing all the directories 
    in_file = open('wheretolook.ini', "r") 

    #create the new directory all the files will be moved to 
    createDirectory() 

    #takes the path names one at a time and then passes them to copyFiles 
    for pathName in in_file: 
     copyFiles(pathName) 

Output i get from running my code

出力は、すべてのdiretory下、0〜4のファイルを持っている必要があります。

ありがとうございました!

+1

投稿したサンプルのコードインデントを修正して、ディレクトリのツリー(略称)を追加してください。 – Sergey

+0

野生の推測: '.ini'ファイルはWindowsから来ていますか? Unixの? – cdarke

+0

ファイルを開く(および閉じる)には、['with'](http://stackoverflow.com/q/3012488/1394393)を使用してください。また、ファイルが1行に1つのパスしかない場合、 'ini'は不適切な拡張です。 ['ini'](https://en.wikipedia.org/wiki/INI_file)には特定の形式があります。 (特定の標準は*完全に採用されているわけではありませんが、一般的な実装では、最低でも '[sections]'と 'name = value 'のペアを使います)。 – jpmc26

答えて

0

ファイルを反復処理するときに、各行の末尾に改行文字がありますが、最後の行に改行文字が付きます。これは、各パスが印刷された後に出力に空白行が表示される理由です。あなたは改行を削除するには、あなたのパスにstripを呼び出す必要が

for pathName in in_file: 
    copyFiles(pathname.strip()) 

あなたはより限定的なものとrstrip('\n')を使用しますが、私はすべての先頭と末尾の空白を取り除く容疑者でしたが、とにかく良いです。

関連する問題