Python 删除不同子目录中的相同文件名

Python 删除不同子目录中的相同文件名,python,automation,Python,Automation,python有没有办法进入文件夹的子目录和第二个子目录并删除某个文件?我有一个目录,其中有20个子目录,每个目录都有自己的子目录,其中有一个我想删除的文件。我知道我可以硬编码每一条路径,但有没有更简单的方法 import os, glob for filename in glob.glob("C:\sshconnect.py"): os.remove(filename) 编辑:我想要它,所以假设我有“C:\Stackoverflow\sshconnect.py”“C:\Testing

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

您几乎就到了:
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))

对于python的旧版本,如2.5,除了FileNotFoundError之外,请编写
,e:

作为glob.glob中的文件名(r“C:\*\sshconnect.py”):
将删除所有
C:
直接子目录中的.py文件(非递归)。这就是你想要的吗?@Jean Françoisfare我想要它,所以让我们假设我有“C:\Stackoverflow\sshconnect.py”和“C:\Testing\Test1\sshconnect.py”和“C:\Test2\sshconnect.py”,它将遍历所有这些并删除sshconnect.py。下次你要提问而不是评论。“我这样做是为了你,让你看看如何更好地表达它。”让·弗朗索瓦·法布对此表示抱歉,这不是一个问题。现在你知道了。目的是让未来的读者清楚地了解这个问题。注释只是暂时的。出现错误“除FileNotFoundError外的无效语法为e:”您的意思是“在e中”?您似乎使用了非常旧的python版本。。。是2.5吗?您可以尝试
,但FileNotFoundError除外,e:
。但我建议你改为升级(例如,升级到python 3)是的,它是2.5,如果你不介意我问“os.walk(r)”是什么意思的话?具体来说,rr是原始前缀。避免了反斜杠的加倍。好吧,这里不是,因为它是最后一个反斜杠。但是很好的做法。os.walk是递归文件/目录扫描。