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的面向对象思想分析
Jan 14 Python
详解Python中的Cookie模块使用
Jul 06 Python
python文本数据相似度的度量
Mar 12 Python
python print 按逗号或空格分隔的方法
May 02 Python
用python处理MS Word的实例讲解
May 08 Python
python write无法写入文件的解决方法
Jan 23 Python
python实现复制大量文件功能
Aug 31 Python
python同时遍历两个list用法说明
May 02 Python
推荐值得学习的12款python-web开发框架
Aug 10 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
python代码实现扫码关注公众号登录的实战
Nov 01 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
咖啡常见的种类
2021/03/03 新手入门
php Session存储到Redis的方法
2013/11/04 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
javascript常用的方法分享
2015/07/01 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python插入排序算法实例分析
2015/07/03 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
电脑租赁公司创业计划书
2014/01/08 职场文书
个人工作表现评语
2014/04/30 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
导游词之清晏园
2019/11/22 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
golang 如何通过反射创建新对象
2021/04/28 Golang
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
图神经网络GNN算法
2022/05/11 Python