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程序
Apr 04 Python
在Python的Django框架中实现Hacker News的一些功能
Apr 17 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python中set与frozenset方法和区别详解
May 23 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
python挖矿算力测试程序详解
Jul 03 Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
Flask中endpoint的理解(小结)
Dec 11 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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应用技巧
2008/03/27 PHP
浅析php创建者模式
2014/11/25 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
2016/04/18 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python的变量与赋值详细分析
2017/11/08 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
python实现对变位词的判断方法
2020/04/05 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
学生党支部先进事迹
2014/02/04 职场文书
领导党性分析材料
2014/02/15 职场文书
保密承诺书
2014/03/27 职场文书
十佳党员事迹材料
2014/08/28 职场文书
党建工作整改措施
2014/10/28 职场文书
护林员个人总结
2015/03/04 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
python中对列表的删除和添加方法详解
2022/02/24 Python