前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带你用 Python 编写灭霸脚本!一键随机消灭硬盘的一半文件!

带你用 Python 编写灭霸脚本!一键随机消灭硬盘的一半文件!

作者头像
不二小段
发布2019-05-07 11:47:18
1.5K0
发布2019-05-07 11:47:18
举报
文章被收录于专栏:不二小段不二小段

明天复联 4 就要上映了,不知道小伙伴们都有没有买首映的电影票啊,随着复联的热度增加,各种各样的段子层出不清,我今天就在网上看到这么一个段子:

如果你觉得电脑空间不够用了,不妨试试 Thanos.sh(灭霸脚本),只需一行命令,它就会随机删除硬盘上的一半文件,且无法恢复。如果你是乐于助人的灭霸本霸,建议在好友的电脑上使用,记得提前买好人身意外险哦。

看到这个段子以后很多人一笑而过,我却觉得很有现实意义啊,比如我们电脑里自己下不去手的某些学习资料文件夹,平时由于强迫症不知道删除哪些内容,就很适合用这种方式清理一下嘛。

于是我用 Python 实现了这个脚本,并打包成了 exe 程序分享给大家

程序使用起来也十分危险简单:

1、下载 exe 程序,移动到你需要清理的文件夹下(请不要放在盘符根目录!!!)。程序分两种,一是 Thanos.exe,直接彻底删除文件和文件夹,不可恢复!二是 Merciful_Thanos.exe,将文件或文件夹移至回收站,给你多一次考虑的机会。

2、运行程序,会提示你输入需要清理的文件夹路径,如果是清理程序所在的文件夹的话,可以直接回车确定。注意如果要自行输入路径的话,分隔符要用 \ 而非 / 。

3、为了避免误操作,程序会再次提示你确认,输入 y 或者 yes 后回车。

4、灭霸程序会随机删除文件夹下一半的文件/文件夹。

是不是十分的简单有效啊。


接下来是代码实现的部分。

其实我们的真正目的是为了实战 Python,那这个脚本中用到的知识主要是随机模块和文件操作。Python 有很多用于文件处理的内置模块和函数。这些函数来自很多不同的库,比如 os,os.path,shutil 和 pathlib,以后我们接触到了再详细介绍。

这次的代码逻辑十分简单,一共分为三步:

1、使用 os.listdir() 方法获取指定目录下的文件及文件夹列表;

2、使用 random.sample() 方法从文件列表中获取指定个数的子列表;

3、使用 os.remove()、shutil.rmtree() 及 send2trash.send2trash() 方法遍历删除列表中的文件,区别在于,os.remove()、shutil.rmtree() 会直接彻底删除文件,而send2trash.send2trash() 则是将文件移入回收站。

代码语言:javascript
复制
import os
import random
import shutil


def thanos(dir_path):
    files = os.listdir(dir_path)
    sample = random.sample(files, len(files) // 2)
    for each in sample:
        file_path = os.path.join(dir_path, each)
        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__':
    print('=== 灭霸清理程序 V1.0 ===')
    print('====== Author:不二小段  ======')
    path = input('请输入你要清理的文件目录,如需清理当前目录,请直接按回车:')
    if path == '':
        path = os.getcwd()
    flag = input('请输入y或yes确认操作:')
    if flag == 'y' or 'yes':
        print('===灭霸程序启动===')
        thanos(path)
        print('===灭霸程序已执行完毕===')
        input('===请关闭程序===')
    else:
        input('===程序退出===')

如果想要制作慈悲版灭霸脚本(删除时放入回收站),则需要更改删除文件时用到的方法:

代码语言:javascript
复制
import send2trash


def thanos(dir_path):
    files = os.listdir(dir_path)
    sample = random.sample(files, len(files) // 2)
    print(sample)
    for each in sample:
        file_path = os.path.join(dir_path, each)
        try:
            send2trash.send2trash(file_path)
        except OSError as e:
            pass

常见问题:

Q:程序是否安全?

A:不安全。这是一个自动删除文件的程序!!!虽然我设置了两步确认,但是请抱着娱乐态度在测试文件夹中使用。请勿恶意在他人电脑上使用!!!如因恶意使用导致文件受损,与原作者无关。

Q:是否会发生“我 灭 我 自 己”的情况?

A:分情况。如果是通过运行 py 源码的方式,py 文件源码有可能被随机删除,即“我灭我自己”;如果是通过 exe 程序执行,则无法删除正在占用的程序,会抛出拒绝访问的错误,所以需要添加异常处理。

Q:杀毒软件拦截?

A:因为涉及到删除文件的操作,部分杀毒软件、管家会进行拦截确认。exe 程序为源码打包而来,如果不放心的话,请自己审计 py 源码后使用。

Q:我可否在此基础上进行修改、传播、分发?

A:源代码与程序使用 CC license,可以任意修改、分发。如果您愿意的话,我还是希望能保留原作者信息,或是我的公众号二维码进行传播。

再次声明,该程序仅供娱乐,主要目的是学习 Python 的文件操作,请勿恶意使用!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不二小段 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档