python 递归 os.path 追加一些刹车
python recurcive os.path append with some brake
嘿,这是我的第一个 post (!)
只是为我的小项目寻找令人头疼的递归解决方案:)
正在尝试收集所有文件夹路径(递归),
那是一些特定的文件
到路径数组。
例如:
我的(根)路径是:
c:/test
文件夹测试包含文件'test.txt'
和一些文件夹:“1”、“2”、“3”。
他们中的任何一个也包含 'test.txt' !
(如果未找到 'text.txt':
只是停止循环,不要在子文件夹中搜索!)
现在我的函数将查找 'test.txt'
然后,将所有文件夹收集到我的文件夹列表中:
if os.path.exists(os.path.join(path, 'test.txt')):
full_list = os.listdir(path)
folderslist = []
for folder in full_list:
if os.path.isfile(os.path.join(path, folder)) == 0:
folderslist.append(os.path.join(path, folder))
它的工作还不错,只是不是递归的...
真的不知道如何再次调用该函数
使用相同的列表,并强制他更改 'current path'...
不确定 'list' 是否是我再次调用它的最佳数据结构。
我的目标是在此列表中的每个 forlder 中进行一些操作:
c:/test c:/test/1 c:/test/2 c:/test/3
但如果有更多文件夹(不包含 'test.txt' 所以,请不要将其添加到我的文件夹列表,也不要在里面查看)
希望我的第一次 post 足够清楚 :X
您可以使用os.walk
遍历子文件夹,如果找不到test.txt
,请清空目录列表,这样os.walk
就不会再遍历其子文件夹了:
import os
folderslist = []
for root, dirs, files in os.walk('c:/test'):
if 'test.txt' in files:
folderslist.append(root)
else:
dirs.clear()
嘿,这是我的第一个 post (!) 只是为我的小项目寻找令人头疼的递归解决方案:)
正在尝试收集所有文件夹路径(递归), 那是一些特定的文件 到路径数组。
例如: 我的(根)路径是:
c:/test
文件夹测试包含文件'test.txt' 和一些文件夹:“1”、“2”、“3”。 他们中的任何一个也包含 'test.txt' ! (如果未找到 'text.txt': 只是停止循环,不要在子文件夹中搜索!)
现在我的函数将查找 'test.txt' 然后,将所有文件夹收集到我的文件夹列表中:
if os.path.exists(os.path.join(path, 'test.txt')):
full_list = os.listdir(path)
folderslist = []
for folder in full_list:
if os.path.isfile(os.path.join(path, folder)) == 0:
folderslist.append(os.path.join(path, folder))
它的工作还不错,只是不是递归的... 真的不知道如何再次调用该函数 使用相同的列表,并强制他更改 'current path'... 不确定 'list' 是否是我再次调用它的最佳数据结构。
我的目标是在此列表中的每个 forlder 中进行一些操作:
c:/test c:/test/1 c:/test/2 c:/test/3
但如果有更多文件夹(不包含 'test.txt' 所以,请不要将其添加到我的文件夹列表,也不要在里面查看)
希望我的第一次 post 足够清楚 :X
您可以使用os.walk
遍历子文件夹,如果找不到test.txt
,请清空目录列表,这样os.walk
就不会再遍历其子文件夹了:
import os
folderslist = []
for root, dirs, files in os.walk('c:/test'):
if 'test.txt' in files:
folderslist.append(root)
else:
dirs.clear()