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() |
尝试使用
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
你在找
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中返回文件中找到更详细的代码示例答案。