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.
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())
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 :
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 :
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!