您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python实现分割文件及合并文件的方法

5b51 2022/1/14 8:21:08 python 字数 5652 阅读 476 来源 www.jb51.cc/python

本文实例讲述了Python实现分割文件及合并文件的方法。分享给大家供大家参考。具体如下:

概述

本文实例讲述了Python实现分割文件及合并文件方法分享给大家供大家参考。具体如下:

分割文件split.py如下:

#!/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,os
kilobytes = 1024
megabytes = kilobytes * 1000
chunksize = 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,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

合并文件join_file.py如下:

#!/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,sys
readsize = 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,[fromdir,tofile])
  print 'Joining','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

希望本文所述对大家的Python程序设计有所帮助。

总结

以上是编程之家为你收集整理的Python实现分割文件及合并文件的方法全部内容,希望文章能够帮你解决Python实现分割文件及合并文件的方法所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶