python 脚本提问

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”的文件,删除后不会到回收站,而是直接删除了,所以,如果数据很很重要,请记得先备份数据。

测试代码如下:

参考链接:


Python os.listdir() 方法 | 菜鸟教程 Python os.listdir() 方法 Python OS 文件/目录方法 概述 os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 它不包括 . 和 .. 即使它在文件夹中。 只支持在 Unix, Windows 下使用。 注意:针对目录下有中文目录对情况,Python2 需要经过编码处理,但是在 Python3 中不需要已经没有 unicode() 方法,默认是 utf8 编码,.. https://www.runoob.com/python/os-listdir.html


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")
            

img