python:如何检查文件夹中存在于文件夹中?

Python: How to check folders within folders?

本问题已经有最佳答案,请猛点这里访问。

首先,如果标题不清楚,让我道歉。

为了简化我在工作中所做的任务,我已经开始编写这个脚本来自动从某个路径删除文件。

我的问题是,在当前状态下,此脚本不会检查路径提供的文件夹中文件夹的内容。

我不知道该如何解决这个问题,因为根据我所知,它应该检查那些文件?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import os


def depdelete(path):
    for f in os.listdir(path):
        if f.endswith('.exe'):
            os.remove(os.path.join(path, f))
            print('Dep Files have been deleted.')
        else:
            print('No Dep Files Present.')


def DepInput():
    print('Hello, Welcome to DepDelete!')
    print('What is the path?')
    path = input()
    depdelete(path)


DepInput()


尝试使用os.walk遍历目录树,如下所示:

1
2
3
4
5
6
7
def depdelete(path):
    for root, _, file_list in os.walk(path):
        print("In directory {}".format(root))
        for file_name in file_list:
            if file_name.endswith(".exe"):
                os.remove(os.path.join(root, file_name))
                print("Deleted {}".format(os.path.join(root, file_name)))

下面是docs(下面有一些用法示例):https://docs.python.org/3/library/os.html os.walk


你在找os.walk()。在您的情况下,它可以这样工作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import os

def dep_delete(path):
    for path, dirs, files in os.walk(path):
       for f in files:
           if f.endswith('.exe'):
               os.remove(os.path.join(path, f))
    print('Dep files have been deleted.')

def dep_input():
    print('Hello, Welcome to dep_delete!')
    print('What is the path?')
    path = input()
    dep_delete(path)


dep_input()

另请参见:在python中列出目录树结构?


看看os.walk()。

这个函数将为您遍历子目录。循环将如下所示。

1
2
3
4
5
6
for subdir, dirs, files in os.walk(path):
    for f in files:  
      if f.endswith('.exe'):
          fullFile = os.path.join(subdir, f)
          os.remove(fullFile)
          print (fullFile +" was deleted")

目前,您的代码只是循环访问所提供文件夹中的所有文件和文件夹,并检查每个文件和文件夹的名称。为了检查路径中文件夹的内容,必须使代码递归。

您可以使用os.walk浏览路径中的目录树,然后检查其内容。

您将在递归子文件夹搜索和列表python中返回文件中找到更详细的代码示例答案。