Maison  >  Article  >  développement back-end  >  Tutoriel Python : Comment diviser et fusionner des fichiers volumineux à l'aide de Python ?

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

WBOY
WBOYavant
2023-04-22 11:43:081905parcourir

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)

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

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

Split

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

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 行

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer