将分割的文件进行合并

#!/usr/bin/env python3
import os,sys,time
readsize=1024
j='='
 
def join(fromdir,tofile):
        if os.path.exists(tofile):
                os.remove(os.path.join(fromdir,tofile))
        output=open(tofile,'wb')
        parts=os.listdir(fromdir)
        parts.sort()
        pars=len(parts)
        i=0
        for filename in parts:
                i+=1
                filepath=os.path.join(fromdir,filename)
                fileobj=open(filepath,'rb')
                while True:
                        filebytes=fileobj.read(readsize)
                        if not filebytes:
                                break
                        output.write(filebytes)
                fileobj.close()
                perbar(i,pars)
        output.close()
        print('文件合并完成')
 
def perbar(i,pars):
        global j
        sys.stdout.write('文件正在合并:||'+('%s'+'%'+str((138-len(j)))+'s')%(j,'['+str(int(i/pars*100))+']')+'\r')
        sys.stdout.flush()
        time.sleep(0.01)
        j += '='
 
if __name__=='__main__':
        if len(sys.argv) == 2 and sys.argv[1] == '-help':
                print('usage: join-file.py [from-dirname to-filename]')
        else:
                if len(sys.argv) != 3:
                        interactive=True
                        fromdir=input('请输入存储块的目录:')
                        tofile=input('请输入合并后的文件名:')
                else:
                        interactive = False
                        fromdir,tofile=sys.argv[1:]
                absfrom,absto=map(os.path.abspath,[fromdir,tofile])
                print('合并',absfrom,'到文件',absto)
 
                try:
                        join(fromdir,absto)
                except:
                        print('合并文件发生错误异常')
                        print(sys.exc_info()[0],sys.exc_info()[1])
                else:
                        print('文件合并结果:',absto)
                if interactive: input('请输入enter键')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值