我想找到只有特定文件夹兄弟的特定文件夹的路径
例如:
我想查找名为zeFolder
的所有文件夹,其中包含兄弟档案文件夹brotherOne
和brotherTwo
| -dad1
| --- brotherOne
| --- brotherFour
| | --- zeFolder( 不匹配 )
| -dad2
| --- brotherOne
| --- brotherTwo <| --- zeFolder(♥♥♥Match♥♥♥)
[...]
下面是我的代码,但是使用此解决方案,我找到了所有文件夹。
import os
for root, dirs, files in os.walk("/"):
#print (dirs)
for name in dirs:
if name == 'totolo':
print ('finded')
print(os.path.join(root, name))
我不知道如何使用条件语句来执行此操作
谢谢你的帮助。
答案 0 :(得分:2)
基本上听起来你想要找到一组特定的子文件夹,所以使用sets
是很自然的,这使得这很容易。在检查相等性时,它们的使用也会删除顺序依赖性。
import os
start_path = '/'
target = 'zeFolder'
siblings = ['brotherOne', 'brotherTwo']
sought = set([target] + siblings)
for root, dirs, files in os.walk(start_path):
if sought == set(dirs):
print('found')
答案 1 :(得分:1)
如何使用列表
import os
folder = 'zeFolder'
brothers = ['brotherOne', 'brotherTwo']
for dirpath, dirnames, filenames in os.walk('/'):
if folder in dirnames and all(brother in dirnames for brother in brothers):
print 'matches on %s' % os.path.join(dirpath, 'zeFolder')
或设置
import os
folder = 'zeFolder'
brothers = set(['brotherOne', 'brotherTwo', folder])
for dirpath, dirnames, filenames in os.walk('/'):
if set(dirnames).issuperset(brothers) :
print 'matches on %s' % os.path.join(dirpath, 'zeFolder')
对我来说两者都以相同的速度运行。
答案 2 :(得分:0)
import os
import glob
filelist = glob.glob(r"dad1/*brotherOne")
for f in filelist:
print(f)
filelist = glob.glob(r"dad1/*brotherTwo")
for f in filelist:
print(f)
您也可以尝试使用glob技术。并且在for循环中做你想做的任何动作。