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实现ssh批量登录并执行命令
Oct 25 Python
用python实现百度翻译的示例代码
Mar 09 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
Python构建图像分类识别器的方法
Jan 12 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
基于Python实现签到脚本过程解析
Oct 25 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
python实现堆排序的实例讲解
Feb 21 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
Pyinstaller加密打包应用的示例代码
Jun 11 Python
详解Python流程控制语句
Oct 28 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 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 反向排序和随机排序代码
2010/06/30 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
ie focus bug 解决方法
2009/09/03 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
在Python中使用dict和set方法的教程
2015/04/27 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
产品设计开发计划书
2014/05/07 职场文书
竞聘上岗演讲
2014/05/19 职场文书
保护环境标语
2014/06/09 职场文书
生物技术专业求职信
2014/06/10 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
优秀班组事迹材料
2014/12/24 职场文书
2015年复活节活动总结
2015/02/27 职场文书
青年志愿者活动感想
2015/08/07 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python