【问题标题】:Deleting specific files from a directory从目录中删除特定文件
【发布时间】:2015-05-13 19:27:31
【问题描述】:

我试图从一个目录中删除除两个之外的所有文件(这将被删除,然后重新写入)。其中一个不被删除的文件包含文件夹/目录中所有文件的名称(另一个包含目录中的文件数)。

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

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

或者...

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

这两种方法中哪一种效率最高,如何实现? 任何帮助将不胜感激。

【问题讨论】:

    标签: file python-3.2


    【解决方案1】:

    无论您使用哪种方法,您最终都会一个一个地删除文件。您所做的任何优化都将非常微不足道。如果没有实际计时你的算法,我会说它们都会花费大约相同的时间(这会因一台计算机而异,取决于 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)
    

    【讨论】:

    • 方法 1 中的 2 个不同的文件路径是什么?一个是包含所有文件的文件夹,另一个是包含文件名的文件吗?
    • 这里只提到了一个路径——文件的路径包含要删除的文件的路径
    • 好的,我会玩一下。
    • 是的,这正是我所需要的!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2022-10-23
    • 1970-01-01
    • 2018-10-22
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多