标记丢失特定文件的子目录

时间:2015-01-09 01:46:05

标签: python

在目录结构中:

"~/clients/images/"

其中clients包含近1000个images子目录,我需要发现哪些子目录缺少文件master.jpg。我尝试将所需的输出打印到控制台失败,我尝试将其写入.txt文件。

import os

path = os.path.expanduser('~/clients/images/')
mast  = '/master.jpg'

print '\nFinding missing masters...n'

for dirpath, dirnames, filenames in os.walk(path):
    for filename in filenames:
        recipe = os.path.join(dirpath, filename)
        if "master.jpg" not in filenames:
            print str(dirnames), '\n'

目前做的是看似打印出大量空列表(" []")和换行符,这绝对不是我想要的(我只想知道哪些子目录缺少' master.jpg' 。)

1 个答案:

答案 0 :(得分:1)

试试这个:

for dirpath, dirnames, filenames in os.walk(path):
  if "master.jpg" not in filenames:  print dirpath

对于os.walk生成器生成的每个3元素对象,第一个元素(代码中的dirpath)表示正在检查的目录。第三个元素(代码中的filenames)是一个包含该目录中所有文件的列表,因此检查master.jpgfilenames的缺失是正确的。

我假设master.jpg永远是一个文件 - 如果有可能存在一个名为master.jpg的子目录(看起来很奇怪,但要求是你的而不是我的),那么你可能不得不这样做:

for dirpath, dirnames, filenames in os.walk(path):
  if "master.jpg" not in filenames and "master.jpg" not in dirnames:  print dirpath