从os.walk中排除一些文件()

时间:2017-05-16 13:54:25

标签: python

在Python 3中,我想运行下面的脚本来重命名脚本工作目录的所有子目录中的文件,以便将它们的父文件夹名称附加到它们的文件名。但是,此脚本还会处理目录中的.DS_Store文件以及.py脚本文件本身。我怎么能保留那些不受影响的东西?

import os
for root, dirs, files in os.walk("."):
    if not files:
        continue
    prefix = os.path.basename(root)
    for f in files:
        print(prefix)
        os.rename(os.path.join(root, f), os.path.join(root, "{}_{}".format(prefix, f)))

2 个答案:

答案 0 :(得分:1)

您应该可以检查f变量是否以'开头。'或以' .py'结尾。

类似于:

f.startswith('.')

然后你可以将扩展名与以下内容进行比较:

name, extension = os.path.splitext(f)
if extension in extensions_to_ignore:
    continue

答案 1 :(得分:1)

您也可以使用list comprehensions来实现这一目标,这可能会使其缩短:

for f in [i for i in files if not (i.startswith(".") or i.endswith(".py"))]:
    print(prefix)
    os.rename(os.path.join(root, f), os.path.join(root, "{}_{}".format(prefix, f)))