python文件拆分與重組實(shí)例
更新時(shí)間:2018年12月10日 09:31:25 作者:遠(yuǎn)行的風(fēng)
今天小編就為大家分享一篇python文件拆分與重組實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
文件拆分代碼:
#-*-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文件拆分與重組實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python工具模塊介紹之time?時(shí)間訪問(wèn)和轉(zhuǎn)換的示例代碼
這篇文章主要介紹了python工具模塊介紹-time?時(shí)間訪問(wèn)和轉(zhuǎn)換,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家啊的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
一行代碼python實(shí)現(xiàn)文件共享服務(wù)器
這篇文章主要介紹了一行代碼python實(shí)現(xiàn)文件共享服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Python生成指定數(shù)量的優(yōu)惠碼實(shí)操內(nèi)容
在本篇文章里小編給大家整理了關(guān)于Python生成指定數(shù)量的優(yōu)惠碼的實(shí)例內(nèi)容以及相關(guān)代碼,有需要的朋友們學(xué)習(xí)下。2019-06-06
Python構(gòu)造函數(shù)及解構(gòu)函數(shù)介紹
這篇文章主要介紹了Python構(gòu)造函數(shù)及解構(gòu)函數(shù)介紹,本文只是講解構(gòu)造及解構(gòu)函數(shù)的簡(jiǎn)單知識(shí),需要的朋友可以參考下2015-02-02
基于Python執(zhí)行dos命令并獲取輸出的結(jié)果
這篇文章主要介紹了基于Python執(zhí)行dos命令并獲取輸出的結(jié)果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12

