实现功能:大文件按照指定大小拆分
import sys,os
kilobytes = 1024
megabytes = kilobytes*1000
splitsize = int(10*megabytes)#default chunksize
def split(fromfile,todir,splitsize=splitsize):
#检测存放分割后文件的路径是否存在
if not os.path.exists(todir):
#如果不存在,创建这个文件夹
os.mkdir(todir)
else:
#否则,删除该文件夹内的所有文件
for fname in os.listdir(todir):
os.remove(os.path.join(todir,fname))
#分割编号初始化为0
splitnum = 0
#用二进制格式打开文件
inputfile = open(fromfile,'rb')
while True:
#每次读分割字节数大小的块
block = inputfile.read(splitsize)
#判断文件是否还有内容
if not block:
#文件全部处理完毕,退出循环
break
#块编号加1
splitnum += 1
#构造块文件名,并与目标文件夹拼接
#文件名命名规则:前缀是part,后面接4位格式的数字编号
filename = os.path.join(todir,('data%04d'%splitnum))
#以二进制写模式打开文件
fileobj = open(filename,'wb')
#把当前分块写入文件
fileobj.write(block)
#关闭文件对象
fileobj.close()
return splitnum
if __name__=='__main__':
fromfile = 'D7001661000018_GRKHXX_20210622_26_10.zip'
todir = 'test'
#获得绝对路径
absfrom,absto = map(os.path.abspath,[fromfile,todir])
print('拆分文件',absfrom,'到',absto)
print('拆分后每个文件大小为 %s MB'%round((splitsize/1024/1024),2))
try:
parts = split(fromfile,todir,splitsize)
except:
print('拆分错误:')
print(sys.exc_info()[0],sys.exc_info()[1])
else:
print('拆分成功:',parts,'个文件,拆分至',absto)
运行展示
待拆分文件大小11M:

运行脚本:

拆分完成:

276

被折叠的 条评论
为什么被折叠?



