我有类似以下的目录结构:剔除所有,但一个子目录从文件搜索
Dir1
Dir2
Dir3
Dir4
L SubDir4.1
L SubDir4.2
L SubDir4.3
我要生成的文件列表(带完整路径),其包括Dirs1-3
所有内容,但Dir4
内只有SubDir4.2
。我到目前为止的代码是
import fnmatch
import os
for root, dirs, files in os.walk('.')
if 'Dir4' in dirs:
if not 'SubDir4.2' in 'Dir4':
dirs.remove('Dir4')
for file in files
print os.path.join(root, file)
我的问题是,我试图排除没有SubDir4.2
在它的路径是在Dir4
排除一切,包括我想留的东西的任何文件中的一部分。我应该如何修改上面的内容来做我的愿望?
更新1:我应该补充说,在Dir4
以下有很多目录,因此手动将它们列在排除列表中不是一个实际的选项。我希望能够指定SubDur4.2
作为要读取的Dir4
中唯一的子目录。
更新2:由于我不能控制的原因,我只能访问Python版本2.4.3。
我很困惑。我可能看错了,但你说你只想要SubDir4。2在Dir4中,那么你说这个代码是排除你想要的Dir4中的东西。除了SubDir4.2的内容,Dir4中还有其他的东西吗? – JerseyMike 2012-07-16 12:19:56
对不起,我感到困惑。我想排除'Dir4' **中的所有内容,但**'SubDir4.2'除外,但是我写的代码将'Dir4'中的所有内容排除在外,包括'SubDir4.2',我想知道如何修复它使前者成为可能。 – 2012-07-16 12:30:47
没问题。只是想确保我明白。我提交的解决方案与您正在尝试完成的内容相匹配。我的大脑还没有接受“Pythonic Way”,所以MarcO的解决方案很难让我阅读,但我喜欢它。 :) – JerseyMike 2012-07-16 13:49:34