快速生成指定大小的zip文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | # -*- coding:utf-8 -*- # 生成指定大小文件 import time import os import zipfile import shutil def creatfilesize(n, dirname): local_time = time.strftime( "%Y%m%d%H%M%S" , time.localtime()) file_name = dirname + str (local_time) + ".txt" bigFile = open (file_name, 'w' ) bigFile.seek( 1024 * 1024 * n) bigFile.write( 'test' ) #bigFile.write("test") bigFile.close() print ( 'creat %s MB data' % n) return file_name def creatzfile(filename, writefile): zfile = zipfile.ZipFile(filename, 'a' , compression = zipfile.ZIP_STORED, allowZip64 = True ) #写大文件,开启zip64 zfile.write(writefile) zfile.close() size = float (os.path.getsize(filename)) size_MB = size / ( 1024 * 1024 ) print ( 'zipSize(MB):' , size_MB) return size_MB def delete_file(file_path): """ 删除文件下的文件 """ listdir = os.listdir(file_path) for i in listdir: os.remove(os.path.join(file_path, i)) def zip_dir(dirname, zipfilename): filelist = [] if os.path.isfile(dirname): filelist.append(dirname) else : for root, dirs, files in os.walk(dirname): for name in files: filelist.append(os.path.join(root, name)) zf = zipfile.ZipFile(zipfilename, "w" , zipfile.ZIP_STORED, allowZip64 = True ) for tar in filelist: arcname = tar[ len (dirname):] print ( 'arcname' , arcname) zf.write(tar, arcname) zf.close() size = float (os.path.getsize(zipfilename)) size_MB = size / ( 1024 * 1024 ) print ( 'zipSize(MB):' , size_MB) return size_MB if __name__ = = '__main__' : # n = input("输入你要生成的文件大小(单位为M):") # creatfilesize(n) zipfilename = 'out.zip' dirname = './data/' n = 23.4 writefile = creatfilesize(n, dirname) # 生成指定大小的txt文件 num = 0 while True : zipsize = zip_dir(dirname, zipfilename) num + = 1 if zipsize > = n: break shutil.copyfile(writefile, os.path.join(dirname, '_new%s.txt' % num)) # 清理生成的文件 delete_file(dirname) z = zipfile.ZipFile(zipfilename, "r" ) for filename in z.namelist(): print (filename) |
本文来自博客园,作者:ReluStarry,转载请注明原文链接:https://www.cnblogs.com/relustarry/p/16287659.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统