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


Posted in Python onJuly 10, 2015

本文实例讲述了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, 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

合并文件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, 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

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

Python 相关文章推荐
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
详解Python多线程
Nov 14 Python
Python的时间模块datetime详解
Apr 17 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
python语言基本语句用法总结
Jun 11 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
python requests证书问题解决
Sep 05 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
去除python中的字符串空格的简单方法
Dec 22 Python
python 第三方库paramiko的常用方式
Feb 20 Python
Python写入数据到MP3文件中的方法
Jul 10 #Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 #Python
Python自动登录126邮箱的方法
Jul 10 #Python
Python获取邮件地址的方法
Jul 10 #Python
python实现中文分词FMM算法实例
Jul 10 #Python
Python实现的最近最少使用算法
Jul 10 #Python
Python导入oracle数据的方法
Jul 10 #Python
You might like
APMServ使用说明
2006/10/23 PHP
php include的妙用,实现路径加密
2008/07/29 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
python实现网页自动签到功能
2019/01/21 Python
django做form表单的数据验证过程详解
2019/07/26 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
初中生自我鉴定
2014/02/04 职场文书
网络编辑岗位职责
2014/03/18 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
推广普通话主题班会
2015/08/17 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
nginx访问报403错误的几种情况详解
2022/07/23 Servers