如果fold中没有其他文件类型,则删除给定类型的文件

2024-03-28 19:17:24 发布

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

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

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


Tags: 文件alpha文件夹类型pngetcmyfuncmp3
1条回答
网友
1楼 · 发布于 2024-03-28 19:17:24

听起来你有两个步骤:

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)

相关问题 更多 >