使用Python查找和删除目录中的特定文件和子目录

2024-10-03 19:19:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试自动搜索和删除特定文件夹下的特定文件和文件夹的操作。下面是我的文件夹结构:

主目录是MasterFolder,它包括多个子目录Fol1,Fol2,Fol3,Fol4子目录可能因文件夹而异。在

子文件夹有更多的文件和子文件夹。ExL Fol1包含一些文件文件夹,sometext.txt文件,其他文件夹同样适用于主文件夹下的其他Fol2、Fol3等子目录。在

现在我想做的是,我想扫描主文件夹,浏览每个儿童文件夹,寻找一个名为someText.txt文件以及每个子文件夹下的一个名为someFilesFolder的文件夹,并将其删除。理想情况下,我想删除的文件夹名和文件名在每个ChildFolder下都是相同的,所以查找应该只发生在主文件夹的下一级。我检查了多篇文章,但所有内容都指定使用舒蒂尔.rmtree在一个文件夹下,但我正在寻找的东西,将做查找和删除递归我相信。在


Tags: 文件txt文件夹结构儿童主目录sometextexl
1条回答
网友
1楼 · 发布于 2024-10-03 19:19:32

要开始:

Ideally the folder name and file name I would want to delete is same under every ChildFolder, so the find should happen only one level down the MasterFolder.

遍历MasterFolder下每个子文件夹的一个简单方法是循环[os.listdir]('/path/to/MasterFolder')。这将为您提供文件和子文件夹。你可以用^{}来检查它们。但是只要try就可以像所有文件夹一样对它们进行操作,并通过不做任何适当的/日志记录/任何适当的操作来处理非文件夹上的异常,这要简单得多(而且效率更高,更干净)。在

listdir返回的列表只是裸名称,因此需要^{}将每个名称连接到/path/to/MasterFolder。当然,您还需要使用它来连接"someTxt.txt"和{}。在

最后,虽然您可以在每个子目录上再次执行listdir,并且只删除文件和子目录(如果它们存在的话),但是,同样地,每个子目录只try更简单(更干净、更高效)。你显然已经知道如何shutil.rmtree和{},所以……你就完成了。在


如果“理想状态”不能得到实际保证,那么就必须使用os.listdir,而不是^{}。这稍微复杂一点,但是如果你看一下这些例子,然后再回来阅读例子上面的文档以了解细节,就不难理解了。在

相关问题 更多 >