如何在 python 中获取具有特定文件夹同级的特定文件夹
How can I get a specific folder with a specific folders sibling in python
我想找到只有特定文件夹兄弟的特定文件夹的路径
例如:
我想找到所有名为 zeFolder
的文件夹以及兄弟文件夹 brotherOne
和 brotherTwo
|-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 循环中执行任何您想执行的操作。
我想找到只有特定文件夹兄弟的特定文件夹的路径
例如:
我想找到所有名为 zeFolder
的文件夹以及兄弟文件夹 brotherOne
和 brotherTwo
|-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 循环中执行任何您想执行的操作。