2017-08-21 16 views
0

私はPythonには新しく、DIRを読み取り、そのDIRを.txtファイルで返すスクリプトを作成しようとしています。Python - Filelisting、duplicate results

私のコードは次のとおりです。

import os 
from os import walk 
rootdir = "C:\\PythonTesting\\dirReader\\test" 
fileslist = [] 
fileslisting=(fileslist) 
pathout=(rootdir+"\\output\\") 

#reqFileOutput=input("What do you want to call your output file.?") 
reqFileOutput=("test") #temp file name for testing 
OutputName=(reqFileOutput+".txt") 

fileout = open(pathout+OutputName, "w") #wipes file if already exists 
fileout.close() 

def file_display(fileslist): 
    print(fileslist) 

    file=open(fileslist,"r") 

    fileout = open(pathout+OutputName, "a") 
    fileout.write(fileslist) 


for subdir, dirs, files in os.walk(rootdir): 
    for file in files: 
     filepath = subdir + os.sep + file 
     if filepath.endswith(".txt"): 
      fileslist.append(filepath) 
    for path in fileslist: 
     file_display(path)  

input("\n\nExit?") 

私は.txtの TEST.TXTと test2.txtという名前

私はこのスクリプトを実行すると、それはこれらのファイルを3回を示していますと私のDIRで2つのファイルを持っていますなぜか分からないのですか? 次に、テキストファイルにリストを書きたいのですが、そのときにファイルを順番に書きます。スペースは入れません。 リストに登録するにはどうすればよいですか?

+0

あなたのプログラムは何ですか?出力ファイルの内容を表示できますか?また、出力ファイルの内容を表示できますか? –

+1

私はあなたのコードを実行し、パスを3回リストした出力に問題はありませんでした。そのパスに3つ以上のファイルがないことを確かめますか?私は1つのファイル、2つのファイル、3つのファイルでそれを試して、それは正常に動作します。別々の行にパスを表示するのは簡単なことです。また、終了プロンプトのコードを完成させてください...あなたの2つの追加ファイルと、それらの他の2つのファイルへのパスを保持するテストファイルがリストされていることに留意してください...別のパスとしてフォルダに表示されます。 –

答えて

1

最後のループがインデントされているように見えます。つまり、外側のforループに含まれています。その結果、複数回実行されます。代わりにこのループを試してください:

for subdir, dirs, files in os.walk(rootdir): 
    for file in files: 
     filepath = subdir + os.sep + file 
     # collect paths to *.txt files found 
     if filepath.endswith(".txt"): 
      fileslist.append(filepath) 

# print paths to all *.txt files found 
for path in fileslist: 
    file_display(path)  
+0

ありがとう、私はまだインデントの周りに頭を浮かべて、どのように動作しています。わずか1ヶ月間Pythonを使用していました。 – Runawaygeek