有時候,我們需要把一個大文件發送給別人,但是限於傳輸通道的限制,比如郵箱附件大小的限制,或者網絡狀況不太好,需要將大文件分割成小文件,分多次發送,接收端再對這些小文件進行合併。今天就來分享一下用 Python 分割合併大檔案的方法。
如果是文字文件,可以依行數分割。無論是文字文件還是二進位文件,都可以依指定大小進行分割。
使用Python 的文件讀寫功能就可以實現文件的分割與合併,設定每個文件的大小,然後讀取指定大小的字節就寫入一個新文件,接收端依次讀取小文件,把讀取到的位元組依序寫入一個文件,就可以完成合併。
分割
size = 1024 * 1000 * 10# 10MB with open("bigfile", "rb") as reader: part = 1 while True: part_content = reader.read(size) if not part_content: print("split done.") break with open(f"bigfile_part{part}","wb") as writer: writer.write(part_content)
#合併
total_parts = 5 with open("bigfile","wb") as writer: for i in range(5): with open(f"bigfile_part{i}", "rb") as reader: writer.write(reader.read())
雖然可以自己寫,但是別人寫好了,為什麼不省點時間直接用呢?直接pip 安裝就可以了:
pip install filesplit
分割
from filesplit.split import Split split = Split("./data.rar", "./output") split.bysize(size = 1024*1000*10) # 每个文件最多 10MB
執行之後,我們就可以在output 資料夾裡看到分割好的檔案:
你也可以依照檔案行數分割:
split.bylinecount(linecount = 10000) # 每个文件最多 10000 行
#合併
合併需要對資料夾裡的小文件進行合併,工具要求資料夾內必須有manifest 文件,其格式如下:
filename,filesize,header data_1.rar,10000000,False data_2.rar,10000000,False data_3.rar,10000000,False data_4.rar,10000000,False data_5.rar,1304145,False
合併文件的程式碼只需要指定要合併的目錄,目標目錄,合併後的檔案名,程式碼如下:
from filesplit.merge import Merge merge = Merge(inputdir = "./output", outputdir="./merge", outputfilename = "merged.rar") merge.merge()
執行之後就可以在merge 目錄內看到合併後的檔案:
以上是Python 教學:如何使用 Python 分割和合併大檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!