在各个子目录中删除相同的文件名

时间:2017-01-19 17:25:11

标签: python automation

有没有办法让python进入子目录和文件夹的第二个子目录并删除某个文件?我有一个目录,在其中20个其他子目录,每个子目录都有自己的子目录,我想要删除某个文件。我知道我可以对每个人的路径进行硬编码,但有更简单的方法吗?

import os, glob
for filename in glob.glob("C:\sshconnect.py"):
    os.remove(filename) 

编辑:我想要它,所以我要说"C:\Stackoverflow\sshconnect.py"& "C:\Testing\Test1\sshconnect.py"& "C:\Test2\sshconnect.py",它应该通过所有这些并删除所有文件夹中的sshconnect.py

1 个答案:

答案 0 :(得分:2)

你几乎就在那里:glob返回扩展文件路径的列表。只需迭代它们并删除文件。

由于你有两个级别的文件,你可以这样做:

import os, glob
for filename in glob.glob(r"C:\*\sshconnect.py")+glob.glob(r"C:\*\*\sshconnect.py"):
    try:
        os.remove(filename) 
    except FileNotFoundError as e:
        print(str(e))

(注意文件受保护时的异常处理:脚本继续)

或者如果您想要任何深度:

for root,dirs,files in os.walk(r"C:\\"):
   for f in files:
       if f=="sshconnect.py":
          try:
             os.remove(os.path.join(root,f))
          except FileNotFoundError as e:
             print(str(e))

对于像2.5这样的旧版python,请写except FileNotFoundError, e: