我的目录包含多个子目录,每个子目录也包含 多个目录。我的文件存在于所有子目录中,需要根据子目录选择文件。我可以得到一些输入。
like <cell 1> <cell 2> <cell 3>
each cell1
<job 1> <job 2> < job 3>
each job contain sample. txt
类似的cell2和cell 3.所以我想从每个cell / job1目录中提取sample.txt。 并编写以下程序。 修复问题后修改程序。我们能做得更好吗
#!/usr/bin/py
import os
def find_all(name, path):
result = []
for root, dir, files in os.walk(path):
print "root %s dir %s" %(root, dir)
if "job1" in root:
print "\n"
if name in files:
result.append(os.path.join(root, name))
return result
name = "sample.txt"
path = "."
data = find_all(name, path)
print data
〜
答案 0 :(得分:1)
产生元组的第二个元素(通过os.walk)是目录列表,而不是目录名。
您应该检查root
而不是dirs
。
请尝试以下操作:
def find_all(name, path):
result = []
for root, dirs, files in os.walk(path):
if os.path.basename(root) == 'job1':
if name in files:
result.append(os.path.join(root, name))
return result
使用glob.glob
的替代方案:
import glob
import os
data = glob.glob(os.path.join('cell*', 'job1', 'sample.txt'))