Python - 文件列表,重复结果

时间:2017-08-21 16:04:37

标签: python loops directory writetofile

我是Python新手并尝试创建一个读取DIR的脚本并将该DIR返回到.txt文件中。

我的代码是:

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?")

我的DIR中有两个文件,带有.txt  TEST.txt和  的test2.txt

当我运行此脚本时,它会将这些文件列出3次,但我不知道为什么? 接下来,我希望它将列表写入文本文件,当我这样做时,它只是将它们一个接一个地写入文件中,没有空格。 我如何让他们列出?

1 个答案:

答案 0 :(得分: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)