如何遍历一个主文件夹的所有文件夹中的所有文件?

时间:2019-06-20 12:12:20

标签: python loops scripting

所以我写了一个Python脚本,它可以对某个.txt文件做某件事:

with open("1.txt") as f:
    for line in f:
        #DoStuff

现在这适用于1个.txt文件。 我有一个主文件夹,在主文件夹中,我有不同的其他文件夹,在每个文件夹中,我也有几个.txt文件。

如何遍历所有这些,以将脚本应用于主文件中每个文件夹中的每个.txt文件?

3 个答案:

答案 0 :(得分:1)

您可以使用os.walk()

c:\projects\hc2\app\readme.txt
c:\projects\hc2\app\release.txt
c:\projects\hc2\web\readme.txt
c:\projects\hc2\whois\download\afrinic.txt
c:\projects\hc2\whois\download\apnic.txt
c:\projects\hc2\whois\download\arin.txt
c:\projects\hc2\whois\download\lacnic.txt
c:\projects\hc2\whois\download\ripe.txt
c:\projects\hc2\whois\out\test\resources\asn\afrinic\3068.txt
c:\projects\hc2\whois\out\test\resources\asn\afrinic\37018.txt

输出:

ProductId   Code
844558      3
844558      3.5
844558      4
296013      2
296013      3
494948      3.5
494948      4
494948      9
392991      4
392991      9.5

答案 1 :(得分:0)

您可以使用glob.iglob()os.walk()。 这里为您提供了一些功能。

def list_of_files(path, extension, recursive=False):
    '''
    Return a list of filepaths for each file into path with the target extension.
    If recursive, it will loop over subfolders as well.
    '''
    if not recursive:
        for file_path in glob.iglob(path + '/*.' + extension):
            yield file_path
    else:
        for root, dirs, files in os.walk(path):
            for file_path in glob.iglob(root + '/*.' + extension):
                yield file_path

您需要import glob, os才能使用它。

在您的情况下:

for file in list_of_files(path='master_folder_path_here', extension='txt'):
    ...

答案 2 :(得分:0)

您可以使用python中的glob模块

from glob import glob

file_list = glob("(folder path)/*/*")

这将为您提供子子文件夹中所有文件路径的列表。

然后您可以迭代并执行操作。