Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python查找和删除目录中的特定文件和子目录_Python_Find_Delete File - Fatal编程技术网

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

使用Python查找和删除目录中的特定文件和子目录,python,find,delete-file,Python,Find,Delete File,我正在尝试对特定文件夹下的特定文件和文件夹自动执行搜索和删除操作。以下是我拥有的文件夹结构: 主目录是MasterFolder,它包括多个子目录,这些子目录是子文件夹Fol1、Fol2、Fol3、Fol4。子目录可能因文件夹而异 子文件夹包含更多文件和子文件夹。ExL Fol1保存SomeFileFolder、sometext.txt和另一个FileFolder,这同样适用于主文件夹下的其他Fol2、Fol3等子目录 现在,我想做的是扫描主文件夹,检查每个子文件夹,在每个子文件夹下查找一个名为s

我正在尝试对特定文件夹下的特定文件和文件夹自动执行搜索和删除操作。以下是我拥有的文件夹结构:

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

子文件夹包含更多文件和子文件夹。ExL Fol1保存SomeFileFolder、sometext.txt和另一个FileFolder,这同样适用于主文件夹下的其他Fol2、Fol3等子目录

现在,我想做的是扫描主文件夹,检查每个子文件夹,在每个子文件夹下查找一个名为someText.txt的文件和一个名为sometfilesfolder的文件夹,并将其删除。理想情况下,我想删除的文件夹名和文件名在每个子文件夹下都是相同的,因此查找应该只发生在主文件夹的下一级。我检查了多篇文章,但所有内容都指定在一个文件夹下使用shutil.rmtree删除特定文件或目录,但我正在寻找可以递归查找和删除的内容

要开始,请执行以下操作:

理想情况下,我想删除的文件夹名和文件名在每个子文件夹下都是相同的,因此查找应该只发生在主文件夹的下一级

查看
MasterFolder
下的每个子文件夹的一个简单方法是循环[
os.listdir]('/path/to/MasterFolder')
。这将为您提供文件和子文件夹。你可以和他们每个人核对一下。但更简单(更高效、更干净)的方法是
尝试
像处理所有文件夹一样对它们进行操作,并通过不做任何事情/记录/任何适当的操作来处理非文件夹上的异常

listdir
返回的列表只是空名称,因此需要将每个名称连接到
/path/to/MasterFolder
。当然,您还需要使用它来连接
“someTxt.txt”
“someFilesFolder”

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



如果“理想情况下”实际上不能保证,那么您将不得不使用
os.listdir
。这稍微复杂一点,但是如果您查看示例,然后回来阅读示例上面的文档以了解详细信息,就不难理解了。

作为旁注,您是否有理由使用Python而不只是使用shell?例如,
rm-rfv/path/to/MasterFolder/*/someText.txt/path/to/MasterFolder/*/somefilefolder
将在任何POSIX类shell(sh样式或csh样式)中执行您想要的操作,我非常确定在使用cmd或Powershell的Windows中执行这项操作不会太困难。