如何在 python 中获取具有特定文件夹同级的特定文件夹

How can I get a specific folder with a specific folders sibling in python

我想找到只有特定文件夹兄弟的特定文件夹的路径

例如: 我想找到所有名为 zeFolder 的文件夹以及兄弟文件夹 brotherOnebrotherTwo

|-dad1
|---brotherOne
|---brotherFour
|---zeFolder (not匹配)

|-dad2
|---brotherOne
|---brotherTwo
|---zeFolder (♥♥♥匹配♥♥♥)

[...]

下面是我的代码,但是通过这个解决方案我找到了所有的文件夹。

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))

我不知道如何使用条件语句来做到这一点

谢谢你的帮助。

使用列表怎么样

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') 

两者 运行 对我来说速度相同。

基本上听起来您想查找一组特定的子文件夹,因此使用 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')
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 循环中执行任何您想执行的操作。