从目录中删除特定文件

Deleting specific files from a directory

我正在尝试从一个目录中删除除两个文件之外的所有文件(将被删除,然后重写)。其中一个文件,不要删除,包含folder/directory中所有文件的名称(另一个包含目录中的文件数)。

我相信(可能?)有 2 种解决方案:

从未删除的文件中读取每个文件的名称,并逐个删除,直到只剩下最后2个文件,

或...

因为所有其他文件都以 .txt 结尾,所以我可以使用某种过滤器,它只会删除具有此结尾的文件。

这两个中哪一个最有效,如何实现? 任何帮助将不胜感激。

无论使用哪种方法,您最终都会一个一个地删除文件。您所做的任何优化都将非常微小。如果不实际为您的算法计时,我会说它们都需要大约相同的时间(并且这会因一台计算机而异,具体取决于 CPU 速度、HDD 类型等)。因此,我不会争论这一点,而是会为您提供您提到的两种方式的代码:

方法一:

import os

def deleteAll(infilepath):
    with open(infilepath) as infile:
        for line in infile:
            os.remove(line)

方法二:

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)