python文件拆分与重组实例


Posted in Python onDecember 10, 2018

文件拆分代码:

#-*-encoding:utf-8-*-

 

import os

import sys

import threading

 

def getFileSize(file):

 file.seek(0, os.SEEK_END)

 fileLength = file.tell()

 file.seek(0, 0)

 return fileLength

 

def divideFile():

 fileFullPath = r"%s" % raw_input("File path: ").strip("\"")

 divideTotalPartsCount = int(raw_input("How many parts do you like to divide?: "))

 if os.path.exists(fileFullPath):

  file = open(fileFullPath, 'rb')

  fileSize = getFileSize(file)

  file.close()

  # send file content

  for i in range(divideTotalPartsCount):

   filePartSender = threading.Thread(target=seperateFilePart, args=(fileFullPath, divideTotalPartsCount, i+1, fileSize))

   filePartSender.start()

  

  for i in range(divideTotalPartsCount):

   sem.acquire()

  os.remove(fileFullPath)

 else:

  print "File doesn't exist"

 

def seperateFilePart(fileFullPath, divideTotalPartsCount, threadIndex, fileSize):

 try:

  # calculate start position and end position

  filePartSize = fileSize / divideTotalPartsCount

  startPosition = filePartSize * (threadIndex - 1)

  #print "Thread : %d, startPosition: %d" % (threadIndex, startPosition)

  endPosition = filePartSize * threadIndex - 1

  if threadIndex == divideTotalPartsCount:

   endPosition = fileSize - 1

   filePartSize = fileSize - startPosition

  file = open(fileFullPath, "rb")

  file.seek(startPosition)

  filePartName = fileFullPath + ".part" + str(threadIndex)

  filePart = open(filePartName, "wb")

  lengthWritten = 0

  while lengthWritten < filePartSize:

   bufLen = 1024

   lengthLeft = filePartSize - lengthWritten

   if lengthLeft < 1024:

    bufLen = lengthLeft

   buf = file.read(bufLen)

   filePart.write(buf)

   lengthWritten += len(buf)

  filePart.close()

  file.close()

  sem.release()

  print "Part %d finished, size %d" % (threadIndex, filePartSize)

 except Exception, e:

  print e

 

sem = threading.Semaphore(0)

while True:

 divideFile()

文件重组代码:

#-*-encoding:utf-8-*-

import os

def getFileSize(file):

 file.seek(0, os.SEEK_END)

 fileLength = file.tell()

 file.seek(0, 0)

 return fileLength

 

def rebuildFile():

 fileFullPath = r"%s" % raw_input("File base path: ").strip("\"")

 divideTotalPartsCount = int(raw_input("How many parts have you divided?: "))

 file = open(fileFullPath, "wb")

 for i in range(divideTotalPartsCount):

  filePartName = fileFullPath + ".part" + str(i+1)

  filePart = open(filePartName, "rb")

  filePartSize = getFileSize(filePart)

  lengthWritten = 0

  while lengthWritten < filePartSize:

   bufLen = 1024

   buf = filePart.read(bufLen)

   file.write(buf)

   lengthWritten += len(buf)

  filePart.close()

  os.remove(filePartName)

 file.close()

 

while True:

 rebuildFile()

拆分文件演示:

源文件:

python文件拆分与重组实例

拆分:

python文件拆分与重组实例

拆分后文件:

python文件拆分与重组实例

重组文件:

python文件拆分与重组实例

重组后文件:

python文件拆分与重组实例

以上这篇python文件拆分与重组实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中global与nonlocal比较
Nov 21 Python
Python中使用select模块实现非阻塞的IO
Feb 03 Python
利用Python命令行传递实例化对象的方法
Nov 02 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
python获取指定时间差的时间实例详解
Apr 11 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
python实现批量解析邮件并下载附件
Jun 19 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
python绘制封闭多边形教程
Feb 18 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
python安装和pycharm环境搭建设置方法
May 27 Python
tensorflow2.0教程之Keras快速入门
Feb 20 Python
Python对excel文档的操作方法详解
Dec 10 #Python
使用python进行拆分大文件的方法
Dec 10 #Python
python使用udp实现聊天器功能
Dec 10 #Python
Python面向对象之类和对象实例详解
Dec 10 #Python
详解Django-auth-ldap 配置方法
Dec 10 #Python
Python网页正文转换语音文件的操作方法
Dec 09 #Python
python 使用 requests 模块发送http请求 的方法
Dec 09 #Python
You might like
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
js数组的操作详解
2013/03/27 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
世界上最短的数字判断js代码
2019/09/09 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Python爬取国外天气预报网站的方法
2015/07/10 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
Python实现密码薄文件读写操作
2019/12/16 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
德国帽子专家:Hutshopping
2019/11/03 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
物业保安员岗位职责制度
2014/01/30 职场文书
社区禁毒工作方案
2014/06/02 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
七年级数学教学反思
2016/02/17 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP