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中的命令行参数解析工具之docopt详解
Mar 27 Python
python验证码识别教程之滑动验证码
Jun 04 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
破解安装Pycharm的方法
Oct 19 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
Python JSON编解码方式原理详解
Jan 20 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
django项目中新增app的2种实现方法
Apr 01 Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 Python
如何在python中执行另一个py文件
Apr 30 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
Python中的程序流程控制语句
Feb 24 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 HTTP 认证实例详解
2016/11/03 PHP
一些mootools的学习资源
2010/02/07 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
react redux入门示例
2018/04/19 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
使用Python绘制图表大全总结
2017/02/11 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python读取并写入mat文件的方法
2019/07/12 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
python使用列表的最佳方案
2020/08/12 Python
python实现经典排序算法的示例代码
2021/02/07 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
蔬菜基地的创业计划书
2014/01/06 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
2014年车间工作总结
2014/11/21 职场文书
药店收银员岗位职责
2015/04/07 职场文书
小学课改工作总结
2015/08/13 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
vue首次渲染全过程
2021/04/21 Vue.js