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 list语法学习(带例子)
Nov 01 Python
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
pandas.DataFrame 根据条件新建列并赋值的方法
Apr 08 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
python 5个顶级异步框架推荐
Sep 09 Python
python绘制分布折线图的示例
Sep 24 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
通用的Django注册功能模块实现方法
Feb 05 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设计模式 Command(命令模式)
2011/06/26 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
留学推荐信中文范文三篇
2014/01/25 职场文书
大四自我鉴定
2014/02/08 职场文书
股权收购意向书
2014/04/01 职场文书
房屋委托书范本
2014/04/04 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
购房委托书范本
2014/09/18 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
初级职称评定工作总结
2015/08/13 职场文书
教师个人教学反思
2016/02/23 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python