快速生成指定大小的zip文件
# -*- 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

浙公网安备 33010602011771号