Python 如何迭代一个主文件夹的所有文件夹中的所有文件?
因此,我编写了一个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
.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)/*/*")