Tutoriel Python : Comment diviser et fusionner des fichiers volumineux à l'aide de Python ?

WBOY
Libérer: 2023-04-22 11:43:08
avant
1979 Les gens l'ont consulté

Parfois, nous devons envoyer un fichier volumineux à d'autres, mais en raison des limitations du canal de transmission, telles que la limite de taille des pièces jointes aux e-mails, ou que l'état du réseau n'est pas très bon, nous devons diviser le fichier volumineux. en petits fichiers, envoyer et recevoir plusieurs fois. La fin fusionne ensuite ces petits fichiers. Aujourd'hui, je vais partager comment diviser et fusionner des fichiers volumineux à l'aide de Python.

Idées et mise en œuvre

S'il s'agit d'un fichier texte, il peut être divisé par le nombre de lignes. Qu'il s'agisse d'un fichier texte ou d'un fichier binaire, il peut être divisé selon la taille spécifiée.

À l'aide de la fonction de lecture et d'écriture de fichiers de Python, vous pouvez diviser et fusionner des fichiers, définir la taille de chaque fichier, puis lire les octets de la taille spécifiée et les écrire dans un nouveau fichier. L'extrémité réceptrice lit les petits fichiers dans l'ordre. et écrit les octets obtenus sont écrits dans un fichier dans l'ordre et la fusion peut être terminée.

Split

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)
Copier après la connexion

Fusionner

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())
Copier après la connexion

Utiliser une bibliothèque tierce

Bien que vous puissiez l'écrire vous-même, mais que d'autres l'ont écrit, pourquoi ne pas gagner du temps et l'utiliser directement ? Installez-le simplement directement avec pip :

pip install filesplit
Copier après la connexion

Split

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

Après l'exécution, nous pouvons voir les fichiers fractionnés dans le dossier de sortie :

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

Vous pouvez également diviser en fonction du nombre de lignes de fichier :

split.bylinecount(linecount = 10000) # 每个文件最多 10000 行
Copier après la connexion

Fusionner

La fusion doit fusionner les petits fichiers dans le dossier. Cet outil nécessite qu'il y ait un fichier manifeste dans le dossier. Son format est le suivant :

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
Copier après la connexion

Le code pour fusionner les fichiers doit uniquement spécifier le répertoire. à fusionner et le répertoire cible, nom du fichier fusionné, le code est le suivant :

from filesplit.merge import Merge
merge = Merge(inputdir = "./output", outputdir="./merge", outputfilename = "merged.rar")
merge.merge()
Copier après la connexion

Après exécution, vous pouvez voir le fichier fusionné dans le répertoire de fusion :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal