python文件拆分与重组实例

文件拆分代码:

#-*-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文件拆分与重组实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python简单分割文件的方法

    本文实例讲述了python简单分割文件的方法.分享给大家供大家参考.具体如下: 有的网站在上传文件时对文件大小有限制,因此可以将大文件分割成多个小文件再上传. #!/usr/bin/env python def split(filename, size): fp = open(filename, 'rb') i = 0 n = 0 temp = open(filename+'.part'+str(i),'wb') buf = fp.read(1024) while(True): temp.wri

  • python分割文件的常用方法

    本文大家整理了一些比较好用的关于python分割文件的方法,方法非常的简单实用.分享给大家供大家参考.具体如下: 例子1 指定分割文件大小 配置文件 config.ini: 复制代码 代码如下: [global] #原文件存放目录 dir1=F:\work\python\3595\pyserver\test #新文件存放目录 dir2=F:\work\python\3595\pyserver\test1 python 代码如下: 复制代码 代码如下: #!/usr/bin/python # -*

  • python如何拆分含有多种分隔符的字符串

    案例: 把某个字符串依据分隔符拆分,该字符包含不同的多种分隔符,如下 s = '12;;7.osjd;.jshdjdknx+' 其中 ; . + 是分隔符 有哪些解决方案? 方法1:通过str.split()方法,每次处理一个分隔符 #!/usr/bin/python3 def go_split(s, symbol): result = [s] for i in symbol: median = [] # 普通方法 # for x in result: # median.extend(x.spl

  • Python实现分割文件及合并文件的方法

    本文实例讲述了Python实现分割文件及合并文件的方法.分享给大家供大家参考.具体如下: 分割文件split.py如下: #!/usr/bin/python ########################################################################## # split a file into a set of parts; join.py puts them back together; # this is a customizable ve

  • python实现按行切分文本文件的方法

    本文实例讲述了python实现按行切分文本文件的方法.分享给大家供大家参考,具体如下: python脚本利用shell命令来实现文本的操作, 这些命令大大减少了我们的代码量. 比如按行切分文件并返回切分后得到的文件列表,可以利用内建的split命令进行切分.为了返回得到的文件列表名,可以先将文件切分到自建的子目录中,然后通过os.listdir获取所有文件,再将这些文件移到上一级目录(即函数参数指定的新目录),删除自建子目录,最后返回该文件名列表. 代码如下,如发现问题欢迎指正: # 创建新路径

  • 使用python进行拆分大文件的方法

    python按指定行数把大文件进行拆分 如图大文件有7000多万行,大小为16G 需要拆分成多个200万行的小文件 代码如下: # -*- coding:utf-8 -*- from datetime import datetime def Main(): source_dir = '/data/u_lx_data/zhangqm/sh/yanjie/liuxuesheng/jz_yuanshi_list0206.txt' target_dir = '/data/u_lx_data/zhangq

  • python文件拆分与重组实例

    文件拆分代码: #-*-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: &

  • Python文件操作函数用法实例详解

    这篇文章主要介绍了Python文件操作函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 字符编码 二进制和字符之间的转换过程 --> 字符编码 ascii,gbk,shit,fuck 每个国家都有自己的编码方式 美国电脑内存中的编码方式为ascii ; 中国电脑内存中的编码方式为gbk , 美国电脑无法识别中国电脑写的程序 , 中国电脑无法识别美国电脑写的程序 现在硬盘中躺着 ascii/gbk/shit/fuck 编码的文件,

  • Python文件及目录操作实例详解

    本文实例讲述了Python文件及目录操作的方法.分享给大家供大家参考.具体分析如下: 在python中对文件及目录的操作一般涉及多os模块,os.path模块.具体函数以及使用方法在程序中说明. #!/usr/bin/env python #-*- coding=UTF8 -*- import os import os.path as op def change_dir(): ''' 该函数显示及改变前目录 using chdir() to change current dir getcwd()

  • python文件与目录操作实例详解

    本文实例分析了python文件与目录操作的方法.分享给大家供大家参考,具体如下: 关于python文件操作的详细说明,大家可以参考前一篇<python文件操作相关知识点总结整理> 官方API:os-Miscellaneous operating system interfaces 下面是demo示例: import re import os import time #图片文件路径 image_path = 'E:\\test\\20130627_140132Hongten.jpg' #文件夹路

  • Python文件操作类操作实例详解

    本文讲述了Python文件操作类的操作实例,详细代码如下: #!/usr/bin/env python #!/usr/bin/env python #coding:utf-8 # Purpose: 文件操作类 #声明一个字符串文本 poem=''' Programming is fun测试 When the work is done if you wanna make your work also fun: use Python! ''' #创建一个file类的实例,模式可以为:只读模式('r'

  • Python映射拆分操作符用法实例

    本文实例讲述了Python映射拆分操作符用法.分享给大家供大家参考.具体如下: name="jack" age=24 s="name is {name} and age is {age}".format(**locals()) print s 运行结果如下: name is jack and age is 24 希望本文所述对大家的Python程序设计有所帮助.

  • Python3之文件读写操作的实例讲解

    文件操作的步骤: 打开文件 -> 操作文件 -> 关闭文件 切记:最后要关闭文件(否则可能会有意想不到的结果) 打开文件 文件句柄 = open('文件路径', '模式') 指定文件编码 文件句柄= open('文件路径','模式',encoding='utf-8') 为了防止忘记关闭文件,可以使用上下文管理器来打开文件 with open('文件路径','模式') as 文件句柄: 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加

  • python 文件操作删除某行的实例

    使用continue跳过本次写循环就可以了 #文本内容 Yesterday when I was young 昨日当我年少轻狂 The tasting of life was sweet 生命的滋味是甜的 As rain upon my tongue tasting I lived by night and shunned the naked light of day tasting123 And only now I see how the time ran away tasting tast

  • python 计算文件的md5值实例

    较小文件处理方法: import hashlib import os def get_md5_01(file_path): md5 = None if os.path.isfile(file_path): f = open(file_path,'rb') md5_obj = hashlib.md5() md5_obj.update(f.read()) hash_code = md5_obj.hexdigest() f.close() md5 = str(hash_code).lower() re

随机推荐