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中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
python写的ARP攻击代码实例
Jun 04 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
详解django三种文件下载方式
Apr 06 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
使用Python横向合并excel文件的实例
Dec 11 Python
对python_discover方法遍历所有执行的用例详解
Feb 13 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
python def 定义函数,调用函数方式
Jun 02 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 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
php与php MySQL 之间的关系
2009/07/17 PHP
PHP教程 变量定义
2009/10/23 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
php实现socket推送技术的示例
2017/12/20 PHP
js下用gb2312编码解码实现方法
2009/12/31 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
python处理PHP数组文本文件实例
2014/09/18 Python
python 重定向获取真实url的方法
2018/05/11 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python中super函数用法实例分析
2019/03/18 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
学校经典推荐信
2013/10/30 职场文书
推荐信模板
2014/05/09 职场文书
校园环保建议书
2014/05/14 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS