作者 | 段晓晨
来源 | 不二小段(ID:rose-fun)
复联 4 已经上映了,不知道小伙伴们都有没有买首映的电影票啊,随着复联的热度增加,各种各样的段子层出不清,我今天就在网上看到这么一个段子:
如果你觉得电脑空间不够用了,不妨试试 Thanos.sh(灭霸脚本),只需一行命令,它就会随机删除硬盘上的一半文件, 且无法恢复 。如果你是乐于助人的灭霸本霸,建议在好友的电脑上使用,记得提前买好人身意外险哦。
看到这个段子以后很多人一笑而过,我却觉得很有现实意义啊,比如我们电脑里自己下不去手的某些学习资料文件夹,平时由于强迫症不知道删除哪些内容,就很适合用这种方式清理一下嘛。
于是我用 Python 实现了这个脚本,并打包成了 exe 程序分享给大家。
灭霸程序链接:
https://pan.baidu.com/s/17fxw4GFNo4v0WKqhG5h2jA 提取码: xs3g
程序使用起来也十分危险简单:
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() 则是将文件移入回收站。
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('===程序退出===')
如果想要制作慈悲版灭霸脚本(删除时放入回收站),则需要更改删除文件时用到的方法:
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 的文件操作,请勿恶意使用!
据说你每点击一个好看
就会有一个平行时空的灭霸被超级英雄击败
(*本文仅代表作者观点,转载请联系原作者)
◆
CTA核心技术及应用峰会
◆
5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。
更多重磅嘉宾请识别海报二维码查看,目前会议早鸟票发售中(原票价1099元),点击阅读原文即刻抢购。