如何在python中获取具有特定文件夹兄弟的特定文件夹

时间:2015-03-02 22:11:24

标签: python os.walk

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

例如: 我想查找名为zeFolder的所有文件夹,其中包含兄弟档案文件夹brotherOnebrotherTwo

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

我不知道如何使用条件语句来执行此操作

谢谢你的帮助。

3 个答案:

答案 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循环中做你想做的任何动作。