Python每日练习之大文件拆分(day~18)

实现功能:大文件按照指定大小拆分

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:
在这里插入图片描述
运行脚本:
在这里插入图片描述
拆分完成:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值