在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)))
答案 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)))