Si vous souhaitez insérer du contenu devant un fichier déjà existant, alors les performances ne sont pas un gros souci. Parce que vous devez à nouveau lire et écrire le contenu de ce fichier quoi qu'il arrive, cela est déterminé par la logique du système de fichiers.
file.seek(0) Il s'agit du décalage défini sur 0, qui est le tout début. Vous pouvez utiliser file.tell() pour confirmer. Vous pouvez vous référer aux deux pages web. https://docs.python.org/2/tutorial/inputoutput.html http://www.tutorialspoint.com/python/file_seek.htm
Comment insérer efficacement du contenu en tête ou au milieu du fichier L'efficacité fait référence à moins de temps (vitesse plus rapide) et à une utilisation des ressources.
Comment écrire suffisamment de code pythonique pour gérer ce problème
Laissez-moi d'abord vous faire part de ma conclusion (si vous avez d'autres opinions, n'hésitez pas à en discuter, peut-être que je me trompe) :
Je ne peux pas le faire
Tant qu'il n'est pas trop mal écrit ou trop difficile à lire, je pense qu'un code médiocre ou plus long est bien (voire mieux)
Citer les paroles du grand dieu pour prouver :
Python facilite beaucoup de choses et contient des bibliothèques et des wrappers pour de nombreuses opérations courantes, mais le but n'est pas de cacher des vérités fondamentales.
La vérité fondamentale que vous rencontrez ici est que vous ne pouvez généralement pas ajouter des données à une structure plate existante sans réécrire la structure entière.
Il existe des moyens d'enregistrer un descripteur de fichier ou de rendre votre code moins lisible, dont beaucoup sont fournis dans d'autres réponses, mais aucun ne change l'opération fondamentale : vous devez lire le fichier existant, puis écrire les données que vous souhaitez ajouter au début. , suivi des données existantes que vous avez lues.
Par tous les moyens, sauvegardez-vous le descripteur de fichier, mais ne cherchez pas à regrouper cette opération dans le moins de lignes de code possible. En fait, ne cherchez jamais le moins de lignes de code - c'est de l'obscurcissement, pas de la programmation.
Il n'y a aucun moyen d'insérer du contenu directement au début, le fichier doit être lu une seule fois. J'ai déjà réfléchi à ce problème. À cette époque, je décompilais un projet python et je devais traiter tous les fichiers par lots. Insérez le contenu suivant au début de chaque fichier python :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
J'ai aussi essayé de nombreuses méthodes. J'ai également cherché des méthodes en ligne à cette époque, mais en vain. Donc, au final, j'ai utilisé la méthode la plus simple et la plus violente, en utilisant osd.walk pour parcourir tous les fichiers python, écrire le contenu au début dans un nouveau fichier, puis lire le contenu du fichier d'origine, l'écrire dans le nouveau fichier, puis le nouveau fichier est renommé avec le nom de fichier d'origine. Bien que ce soit très violent, j'ai découvert plus tard que c'était en fait très rapide, peut-être parce que le fichier n'était pas trop gros. ^_^
Si vous souhaitez insérer du contenu devant un fichier déjà existant, alors les performances ne sont pas un gros souci.
Parce que vous devez à nouveau lire et écrire le contenu de ce fichier quoi qu'il arrive, cela est déterminé par la logique du système de fichiers.
file.seek(0) Il s'agit du décalage défini sur 0, qui est le tout début.
Vous pouvez utiliser file.tell() pour confirmer.
Vous pouvez vous référer aux deux pages web.
https://docs.python.org/2/tutorial/inputoutput.html
http://www.tutorialspoint.com/python/file_seek.htm
Aucune recherche (0) requise
r
Le pointeur de fichier du modèle se trouve au début du fichier.De plus, le contenu du fichier doit être parcouru
Discutons de cette problématique en deux points :
Comment insérer efficacement du contenu en tête ou au milieu du fichier L'efficacité fait référence à moins de temps (vitesse plus rapide) et à une utilisation des ressources.
Comment écrire suffisamment de code pythonique pour gérer ce problème
Laissez-moi d'abord vous faire part de ma conclusion (si vous avez d'autres opinions, n'hésitez pas à en discuter, peut-être que je me trompe) :
Je ne peux pas le faire
Tant qu'il n'est pas trop mal écrit ou trop difficile à lire, je pense qu'un code médiocre ou plus long est bien (voire mieux)
Citer les paroles du grand dieu pour prouver :
Référence :
Ajouter une ligne à un fichier existant en Python
Questions auxquelles j'ai répondu : Python-QA
Il n'y a aucun moyen d'insérer du contenu directement au début, le fichier doit être lu une seule fois.
J'ai déjà réfléchi à ce problème. À cette époque, je décompilais un projet python et je devais traiter tous les fichiers par lots. Insérez le contenu suivant au début de chaque fichier python :
J'ai aussi essayé de nombreuses méthodes. J'ai également cherché des méthodes en ligne à cette époque, mais en vain.
Donc, au final, j'ai utilisé la méthode la plus simple et la plus violente, en utilisant
osd.walk
pour parcourir tous les fichiers python, écrire le contenu au début dans un nouveau fichier, puis lire le contenu du fichier d'origine, l'écrire dans le nouveau fichier, puis le nouveau fichier est renommé avec le nom de fichier d'origine.Bien que ce soit très violent, j'ai découvert plus tard que c'était en fait très rapide, peut-être parce que le fichier n'était pas trop gros. ^_^