Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何迭代一个主文件夹的所有文件夹中的所有文件?_Python_Loops_Scripting - Fatal编程技术网

Python 如何迭代一个主文件夹的所有文件夹中的所有文件?

Python 如何迭代一个主文件夹的所有文件夹中的所有文件?,python,loops,scripting,Python,Loops,Scripting,因此,我编写了一个Python脚本,可以对某个.txt文件执行某些操作: with open("1.txt") as f: for line in f: #DoStuff 现在这适用于1.txt文件。 我有一个主文件夹,主文件夹中有不同的其他文件夹,每个文件夹中也有几个.txt文件 如何迭代所有这些内容,将脚本应用于主文件中每个文件夹中的每个.txt文件?您可以使用os.walk() 输出: c:\projects\hc2\app\readme.txt c:\proje

因此,我编写了一个Python脚本,可以对某个
.txt
文件执行某些操作:

with open("1.txt") as f:
    for line in f:
        #DoStuff
现在这适用于1
.txt
文件。 我有一个主文件夹,主文件夹中有不同的其他文件夹,每个文件夹中也有几个
.txt
文件

如何迭代所有这些内容,将脚本应用于主文件中每个文件夹中的每个
.txt
文件?

您可以使用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

您可以使用
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
您需要
导入glob,os
才能使用它

就你而言:

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

您可以使用python中的glob模块

from glob import glob

file_list = glob("(folder path)/*/*")
这将为您提供子文件夹中所有文件路径的列表


然后你可以迭代并进行操作。

“一个主文件夹”-然后-“主文件”-什么?很抱歉,我不清楚,我会再试一次:我有一个文件夹,在那个文件夹中我有几个文件夹。在几个文件夹中的每个文件夹中,我都有几个.txt文件。我想查看所有的.txt文件。你的问题很清楚,但当我用不到一分钟的时间找到多个重复文件时,很明显,你没有努力解决这个问题yourself@Sayse与其粗鲁无礼,不如实际帮助别人。这是我使用Python的第二天,我还在努力学习。我试着在很多地方查找,我所能找到的只是在一个文件夹中迭代不同的文件。我只是在写相同的答案…:)我会将扩展检查移到最后一个for循环,并去掉列表。还将使用操作系统方法提取扩展名-
os.path.splitext()[1]
或者从glob import glob更改为
,或者更改为
glob.glob(“(文件夹路径)/*/*”)
@Tomerikoo忘记了这一点,谢谢
from glob import glob

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