J'essaie d'écrire un script Python pour mettre à jour l'en-tête (uniquement la première ligne) de certains fichiers énormes, mais comme le nouvel en-tête n'est pas nécessaire pour avoir la même taille (en octets) comme l'original, est là Quoi qu'il en soit, je pourrais changer l'en-tête sans toucher le reste du fichier énorme? ou je dois tout lire tous et écrivez-les au fichier? P>
3 Réponses :
Je ne connais aucun système d'exploitation qui vous permet de supprimer des morceaux arbitraires d'un fichier, donc Python ne peut donc pas vous donner cette fonctionnalité. Je crains que vous soyez coincé sur le reste du fichier énorme. P>
Vous devrez lire et écrire tout le fichier, car le reste du contenu du fichier devra être déplacé pour accueillir les différences de taille d'en-tête. P>
Non, les seules opérations que vous pouvez effectuer sur des fichiers sans toucher l'ensemble du fichier sont troncature , Remplacement de la même taille et Ajout. P>
Vous pouvez toutefois tamponner relativement de petites parties du fichier et écrivez-les après avoir lu toutes les données résidant actuellement dans la nouvelle position, pour éviter l'épuisement de la mémoire. Si la vitesse est un problème, envisagez d'utiliser MMAP . P>
ouais, je pense que ce n'est pas quelque chose que je pouvais éviter .. merci à tous
Si vous modifiez la tête, vous devrez écrire le reste du fichier après la première ligne. C'est juste la façon dont les systèmes de fichiers fonctionnent.