美文网首页
Python按要求切割文件

Python按要求切割文件

作者: 喵呜e喵星人 | 来源:发表于2020-08-26 21:45 被阅读0次
    '''
    需求:给一个文件,按指定的大小切割成小文件。
    设计:把源文件,切割好,存到一个文件夹中。
         若文件夹存在,删除文件夹内所有东西;若文件夹不存在,者创建文件夹。。用到os.path.exists 方法;
        文件切割在一个函数内,循环实现。
        为了能让程序方便使用,对输入参数进行了设置。
        分别对 切割的文件,存放的目录,切割的大小进行设置。
    '''
    
    import sys,os
    kb = 1024
    mb = kb * 1000
    chunsize = int(mb*1.4)
    
    def split(fromfile=None,todir=None,chunksize=chunsize):
        if not os.path.exists(todir):
            os.mkdir(todir)
        else:
            for fname in os.listdir(todir):
                os.remove(os.path.join(todir,fname))
        partnum = 0
        input = open(fromfile,'rb')
        while True:
            chunk = input.read(chunksize)
            if not chunk: break
            partnum +=1
            filename = os.path.join(todir,('part%04d' % partnum))
            fileobj = open(filename,'wb')
            fileobj.write(chunk)
            fileobj.close()
        input.close()
        assert partnum<=9999
        return partnum
    
    if __name__=='__main__':
        if len(sys.argv) ==2 and sys.argv[1] =='-help':
            print('Use :split.py [file-to-split target-dir [chunksize]]')
        else:
            if len(sys.argv) < 3:
                interactive = True
                fromfile = input('file to be split?')
                todir = input('Directory to store part files?')
            else:
                interactive = False
                fromfile,todir = sys.argv[1:3]
                if len(sys.argv) ==4 :chunsize =int(sys.argv[3])
            absfrom,absto = map(os.path.abspath,[fromfile,todir])  #使用map函数把源文件和目标文件夹路径用绝对路径表示。
            print('Splitting',absfrom,'to',absto,'by',chunsize)
    
            try:
                parts = split(fromfile=fromfile,todir=todir,chunksize=chunsize)
            except:
                print('Error during split:')
                print(sys.exc_info()[0],sys.exc_info()[1])
            else:
                print('Split finshed:',parts,'part are in ',absto)
            if interactive:input('Press Enter key')
    

    相关文章

      网友评论

          本文标题:Python按要求切割文件

          本文链接:https://www.haomeiwen.com/subject/jvzfsktx.html