Heim >Backend-Entwicklung >Python-Tutorial >Python-Tutorial: Wie teile ich große Dateien mit Python auf und füge sie zusammen?

Python-Tutorial: Wie teile ich große Dateien mit Python auf und füge sie zusammen?

WBOY
WBOYnach vorne
2023-04-22 11:43:082019Durchsuche

Manchmal müssen wir eine große Datei an andere senden, aber aufgrund der Einschränkungen des Übertragungskanals, z. B. der Begrenzung der Größe von E-Mail-Anhängen oder der nicht sehr guten Netzwerkbedingungen, müssen wir die große Datei aufteilen in kleine Dateien aufteilen, mehrmals senden und empfangen. Am Ende werden diese kleinen Dateien dann zusammengeführt. Heute werde ich zeigen, wie man große Dateien mit Python aufteilt und zusammenführt.

Ideen und Umsetzung

Wenn es sich um eine Textdatei handelt, kann diese durch die Anzahl der Zeilen geteilt werden. Unabhängig davon, ob es sich um eine Textdatei oder eine Binärdatei handelt, kann sie entsprechend der angegebenen Größe aufgeteilt werden.

Mit der Dateilese- und -schreibfunktion von Python können Sie Dateien aufteilen und zusammenführen, die Größe jeder Datei festlegen und dann die Bytes der angegebenen Größe lesen und sie in eine neue Datei schreiben. Das empfangende Ende liest die kleinen Dateien nacheinander und schreibt die erhaltenen Bytes der Reihe nach in eine Datei, und die Zusammenführung kann abgeschlossen werden.

Teilen

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)

Zusammenführen

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())

Verwenden Sie eine Bibliothek eines Drittanbieters

Obwohl Sie es selbst schreiben können, aber andere haben es geschrieben, warum nicht etwas Zeit sparen und es direkt verwenden? Installieren Sie es einfach mit pip:

pip install filesplit

Split

from filesplit.split import Split
split = Split("./data.rar", "./output")
split.bysize(size = 1024*1000*10) # 每个文件最多 10MB

Nach der Ausführung können wir die geteilten Dateien im Ausgabeordner sehen:

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

Sie können auch nach der Anzahl der Dateizeilen aufteilen:

split.bylinecount(linecount = 10000) # 每个文件最多 10000 行

Merge

Merge muss kleine Dateien im Ordner zusammenführen. Dieses Tool erfordert, dass sich eine Manifestdatei im Ordner befindet. Ihr Format ist wie folgt:

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

Der Code zum Zusammenführen der Dateien muss nur das Verzeichnis angeben zusammengeführt werden und das Zielverzeichnis, der Name der zusammengeführten Datei, der Code lautet wie folgt:

from filesplit.merge import Merge
merge = Merge(inputdir = "./output", outputdir="./merge", outputfilename = "merged.rar")
merge.merge()

Nach der Ausführung können Sie die zusammengeführte Datei im Zusammenführungsverzeichnis sehen:

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

Das obige ist der detaillierte Inhalt vonPython-Tutorial: Wie teile ich große Dateien mit Python auf und füge sie zusammen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen