文件拆分代码:
#-*-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,拆分,重组
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“python文件拆分与重组实例”评论...
更新动态
2025年11月07日
2025年11月07日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]




