首頁 >後端開發 >Python教學 >Python 教學:如何使用 Python 分割和合併大檔案?

Python 教學:如何使用 Python 分割和合併大檔案?

WBOY
WBOY轉載
2023-04-22 11:43:082019瀏覽

有時候,我們需要把一個大文件發送給別人,但是限於傳輸通道的限制,比如郵箱附件大小的限制,或者網絡狀況不太好,需要將大文件分割成小文件,分多次發送,接收端再對這些小文件進行合併。今天就來分享一下用 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 資料夾裡看到分割好的檔案:

一文教会你如何用 Python 分割合并大文件

你也可以依照檔案行數分割:

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 教學:如何使用 Python 分割和合併大檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除