博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sephiroth Python 分割文件以及合并文件
阅读量:2398 次
发布时间:2019-05-10

本文共 4423 字,大约阅读时间需要 14 分钟。

1.文件分割代码:

#!/usr/bin/python########################################################################### split a file into a set of parts; join.py puts them back together;# this is a customizable version of the standard unix split command-line # utility; because it is written in Python, it also works on Windows and# can be easily modified; because it exports a function, its logic can # also be imported and reused in other applications;##########################################################################      import sys, oskilobytes = 1024megabytes = kilobytes * 1000chunksize = int(1.4 * megabytes)                   # default: roughly a floppy      def split(fromfile, todir, chunksize=chunksize):     if not os.path.exists(todir):                  # caller handles errors        os.mkdir(todir)                            # make dir, read/write parts    else:        for fname in os.listdir(todir):            # delete any existing files            os.remove(os.path.join(todir, fname))     partnum = 0    input = open(fromfile, 'rb')                   # use binary mode on Windows    while 1:                                       # eof=empty string from read        chunk = input.read(chunksize)              # get next part <= chunksize        if not chunk: break        partnum  = partnum+1        filename = os.path.join(todir, ('part%04d' % partnum))        fileobj  = open(filename, 'wb')        fileobj.write(chunk)        fileobj.close()                            # or simply open().write()    input.close()    assert partnum <= 9999                         # join sort fails if 5 digits    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 = 1            fromfile = raw_input('File to be split? ')       # input if clicked             todir    = raw_input('Directory to store part files? ')        else:            interactive = 0            fromfile, todir = sys.argv[1:3]                  # args in cmdline            if len(sys.argv) == 4: chunksize = int(sys.argv[3])        absfrom, absto = map(os.path.abspath, [fromfile, todir])        print 'Splitting', absfrom, 'to', absto, 'by', chunksize              try:            parts = split(fromfile, todir, chunksize)        except:            print 'Error during split:'            print sys.exc_info()[0], sys.exc_info()[1]        else:            print 'Split finished:', parts, 'parts are in', absto        if interactive: raw_input('Press Enter key') # pause if clicked
2.文件合并代码:

#!/usr/bin/python########################################################################### join all part files in a dir created by split.py, to recreate file.  # This is roughly like a 'cat fromdir/* > tofile' command on unix, but is # more portable and configurable, and exports the join operation as a # reusable function.  Relies on sort order of file names: must be same # length.  Could extend split/join to popup Tkinter file selectors.##########################################################################      import os, sysreadsize = 1024      def join(fromdir, tofile):    output = open(tofile, 'wb')    parts  = os.listdir(fromdir)    parts.sort()    for filename in parts:        filepath = os.path.join(fromdir, filename)        fileobj  = open(filepath, 'rb')        while 1:            filebytes = fileobj.read(readsize)            if not filebytes: break            output.write(filebytes)        fileobj.close()    output.close()      if __name__ == '__main__':    if len(sys.argv) == 2 and sys.argv[1] == '-help':        print 'Use: join.py [from-dir-name to-file-name]'    else:        if len(sys.argv) != 3:            interactive = 1            fromdir = raw_input('Directory containing part files? ')            tofile  = raw_input('Name of file to be recreated? ')        else:            interactive = 0            fromdir, tofile = sys.argv[1:]        absfrom, absto = map(os.path.abspath, [fromdir, tofile])        print 'Joining', absfrom, 'to make', absto              try:            join(fromdir, tofile)        except:            print 'Error joining files:'            print sys.exc_info()[0], sys.exc_info()[1]        else:           print 'Join complete: see', absto        if interactive: raw_input('Press Enter key') # pause if clicked

转载地址:http://swfob.baihongyu.com/

你可能感兴趣的文章
利用sys schema解决一次诡异的语句hang问题
查看>>
数据库容器化|未来已来
查看>>
容器化RDS|计算存储分离架构下的 IO 优化
查看>>
控制文件不一致引发的“血案”
查看>>
MySQL 5.7复制配置不规范修改导致的坑(一)
查看>>
MySQL8.0——Resource Group(资源组)
查看>>
基于Oracle的私有云架构探析(连载二)
查看>>
ASM 翻译系列第九弹:高级知识ASM Toolbox
查看>>
MySQL分区如何迁移
查看>>
基于Oracle的私有云架构探析(连载三)
查看>>
ASM 翻译系列第十三弹:ASM 高级知识 - Forcing the issue
查看>>
DBA福音 | 如何无视数据量快速搭建测试数据库
查看>>
如何清除创建失败的索引
查看>>
Oracle压缩黑科技(一)—基础表压缩
查看>>
容器化RDS—计算存储分离架构下的“Split-Brain”
查看>>
如何使用hammerdb进行MySQL基准测试
查看>>
Oracle压缩黑科技(二)—压缩数据的修改
查看>>
数据库对象信息记录表|全方位认识 mysql 系统库
查看>>
分布式数据库技术论坛
查看>>
容器化RDS—— 计算存储分离 or 本地存储
查看>>