huolong blog

突发奇想的THANOS程序

随机删除脚本

这几天看了复仇者联盟4,忽然有点想写一个灭霸程序,双击打开输入路径后一半的文件灰飞烟灭。

具体实现代码如下:

import os
import random
import shutil

def thanos(dir_path):
    files = os.listdir(dir_path) # 列出目录下文件
    sample = random.sample(files, len(files) // 2) # 随机选取k个元素组成新的列表
    for item in sample:
        file_path = os.path.join(dir_path,item)
        try:
            if(os.path.isfile(file_path)):
                os.remove(file_path)
            elif(os.path.isdir(file_path)):
                shutil.rmtree(file_path)
        except PermissionError as e:
                pass


if __name__ == "__main__":
    path = input("please input file path:")
    if(path == ''):
        path = os.getcwd() # 获取目录
    thanos(path)

顺便比较一下这几种删除函数

os.remove(),os.unlink(),os.removedirs(),shutil.rmtree()这几个函数都有删除的功能,区别如下:

  • os.remove()和os.unlink()这两个函数功能是一样的,都是删除一个文件。
  • os.removedirs()是递归删除空文件夹,即先删除子目录再尝试删除父目录,如果目录是空的则进行删除操作。
  • shutil.rmtree()表示递归删除文件夹下的所有子文件夹和子文件而不管是否为空。