从目录中删除特定文件
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)
我正在尝试从一个目录中删除除两个文件之外的所有文件(将被删除,然后重写)。其中一个文件,不要删除,包含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)