删除给定类型的文件IFF文件夹中没有其他文件类型

时间:2011-10-09 13:13:38

标签: python file conditional-statements file-type delete-file

我想删除[cue,jpg,png,m3u等]类型的某些文件,但是当且仅当它们自己在文件夹中或[cue,jpg,png,m3u等的其他文件时]。 ]类型。我已经有一个函数可以在任何给定的文件夹中获取[cue,jpg,png,m3u等]类型的所有文件并将其作为列表返回,但我只需要根据条件删除所有文件以上。举个例子:文件q.jpg本身就在一个文件夹中。 myfunc()完成后,它将被删除。

编辑抱歉不清楚。让我举个更好的例子: 我们在文件夹 Gamma 中有两个文件夹 Alpha Beta 。在 Alpha 中,有三个文件: 1.mp3,2.mp3,folder.jpg 。在 Beta 中,有一个文件 cover.jpg myfunc()完成后, 1.mp3,2 .mp3,folder.jpg 应该不受影响,而 cover.jpg 应该删除。

1 个答案:

答案 0 :(得分:1)

听起来你有两个步骤:

1)给定扩展列表,获取与该扩展名匹配的文件夹中的所有文件的列表。

2)如果目录中的所有文件都有与您的列表匹配的扩展名,请将其删除

请注意,这不包括有关如何遍历目录结构或要测试的目录的任何信息......示例代码中有一个硬编码的目录。

import os       

dir = "myDirectory" 
extList = ['ext1', 'ext2', 'ext3']
allfiles = os.listdir(dir) # all files in that directory

myfiles = [] # will be appended to to only contain files with extensiosn matching extlist
for file in allfiles:
    parts = file.split('.') # split the filename based on .
    if parts[-1] in extensionlist:
        myfiles.append(file) 

if len(myfiles) == len(allfiles):
    for file in myfiles:
        path = "%s/%s" % (dir, file)
        os.remove(path)
        os.remove(file)