关于逻辑:python删除某些文件扩展名

Python Deleting Certain File Extensions

我对python还比较陌生,但是我已经让这段代码工作了,事实上,做了它打算做的事情。

但是,我想知道是否有一种更有效的方法来编写代码,也许是为了提高处理速度。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 import os, glob


def scandirs(path):
    for currentFile in glob.glob( os.path.join(path, '*') ):
        if os.path.isdir(currentFile):
            print 'got a directory: ' + currentFile
            scandirs(currentFile)
        print"processing file:" + currentFile
        png ="png";
        jpg ="jpg";
        if currentFile.endswith(png) or currentFile.endswith(jpg):
            os.remove(currentFile)

scandirs('C:\Program Files (x86)\music\Songs')

现在,大约有8000个文件,处理每个文件并检查它是否以png或jpg结尾需要相当长的时间。


由于您是通过子目录递归的,请使用os.walk:

1
2
3
4
5
6
7
8
9
import os

def scandirs(path):
    for root, dirs, files in os.walk(path):
        for currentFile in files:
            print"processing file:" + currentFile
            exts = ('.png', '.jpg')
            if currentFile.lower().endswith(exts):
                os.remove(os.path.join(root, currentFile))


如果程序运行正常,速度可以接受,我不会改变它。

否则,你可以试试乌特布的答案。

一般来说,我会把

1
2
png ="png"
jpg ="jpg"

我认为没有直接使用字符串的目的。

更好地测试".png"而不是"png"。

一个更好的解决方案是定义

1
extensions = ('.png', '.jpg')

在某个地方集中使用

1
2
if any(currentFile.endswith(ext) for ext in extensions):
    os.remove(currentFile)

.