我试图从两个目录中删除所有文件(将被删除,然后重写)。其中一个文件(不要删除)包含文件夹/目录中所有文件的名称(另一个包含目录中的文件数)。
我相信那里(可能?)是2个解决方案:
从未删除的文件中读取每个文件的名称并单独删除它们,直到只剩下最后2个文件,
...或
因为所有其他文件都以.txt
结尾,所以我可以使用某种过滤器来删除带有此结尾的文件。
这两个中哪一个最有效,怎么办呢? 任何帮助将不胜感激。
答案 0 :(得分:1)
无论您使用哪种方法,您都将逐个删除文件。你做的任何优化都将是非常微小的。如果没有对算法进行实际计时,我会说它们都需要大约相同的时间(根据CPU速度,HDD类型等,这会因计算机而异。)因此,我不会就此进行辩论,而是为您提供的方式提供代码:
方法一:
import os
def deleteAll(infilepath):
with open(infilepath) as infile:
for line in infile:
os.remove(line)
方法2:
import os
def deleteAll():
blacklist = set(['names/of/files/to/be/deleted', 'number/of/files'])
for fname in (f for f in os.listdir() if f not in blacklist):
os.remove(fname)