Python 删除不同子目录中的相同文件名
python有没有办法进入文件夹的子目录和第二个子目录并删除某个文件?我有一个目录,其中有20个子目录,每个目录都有自己的子目录,其中有一个我想删除的文件。我知道我可以硬编码每一条路径,但有没有更简单的方法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
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是递归文件/目录扫描。