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) |
.