import os, sy
path = "D:\迅雷下载"
dirs = os.listdir(path)
for file in dirs
if os.path.exists(path +"\"+file+"\"+file+"\a.txt")
print(path +"\"+file+"\"+file+"\a.txt")
os.remove(path +"\"+file+"\"+file+"\a.txt")
为啥多加一个+"\"+file他不继续往里找文件夹删除我想删除的文件了呢
因为 for file in dirs 只遍历了指定文件夹path的当前目录下的文件夹和文件,文件夹的子目录没有包含在内,所以不能删除下一级指定文件名的文件;
可以使用os.walk来遍历指定目录下的所有文件夹和文件,当在当前文件夹下寻找到“a.txt”时,再删掉它即可;
测试代码时,请注意下,下面的测试代码可以删除“D:\迅雷下载”文件夹下,所有文件名为“a.txt”的文件,删除后不会到回收站,而是直接删除了,所以,如果数据很很重要,请记得先备份数据。
测试代码如下:
参考链接:
import os
path = "D:\迅雷下载"
# https://www.runoob.com/python/os-listdir.html
dirs = os.listdir(path)
for file in dirs:
print(file)
print()
# https://www.cnblogs.com/wanggang2016/p/10854054.html
for maindir, subdir, file_name_list in os.walk(path):
# print(maindir) #当前主目录
# print(subdir) #当前主目录下的所有目录
# print(file_name_list) #当前主目录下的所有文件
# print("maindir=",maindir)
# print("subdir=",subdir)
# print("file_name_list=",file_name_list)
# print()
# print("find "+maindir+"/a.txt exists ?")
# 当当前文件夹下存在“a.txt”的文件时,删除它。
if os.path.exists(maindir+"/a.txt"):
print("delete " +maindir+"/a.txt")
os.remove(maindir+"/a.txt")