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中利用xml.dom模块解析xml的方法教程
May 24 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
Python制作豆瓣图片的爬虫
Dec 28 Python
解决pandas使用read_csv()读取文件遇到的问题
Jun 15 Python
简单了解python的break、continue、pass
Jul 08 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
python中web框架的自定义创建
Sep 08 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
如何使用Tkinter进行窗口的管理与设置
Jun 30 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
PHP与已存在的Java应用程序集成
2006/10/09 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
php xhprof使用实例详解
2019/04/15 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
python Spyder界面无法打开的解决方法
2018/04/27 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
金士达面试非笔试
2012/03/14 面试题
一些Unix笔试题和面试题
2013/01/22 面试题
精彩的推荐信范文
2013/11/26 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
工程质量承诺书范文
2014/03/27 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
MySQL约束超详解
2021/09/04 MySQL