Supprimer la fin d'un fichier texte [Python] - Python - Programmation
Marsh Posté le 20-01-2010 à 11:21:42
Il faut :
1. créer un nouveau fichier,
2. copier tout l'ancien dans le nouveau sauf la fin,
3. supprimer l'ancien fichier, et renommer le nouveau fichier pour qu'il est le nom de l'ancien.
Marsh Posté le 20-01-2010 à 11:24:00
Tangrim a écrit : Bonjour, |
ouvres ton fichier, passes les lignes dans itertools.takewhile, écrits les lignes sorties dans un nouveau fichier, dernière opération optionnelle supprimes le fichier d'origine et renommes le nouveau.
$ python |
dans as.txt, j'ai que les mots qui commence par "a".
Marsh Posté le 20-01-2010 à 11:34:44
Pour les problèmes de suppression de lignes je comptais déjà passer par quelque chose de la sorte, le problème que j'ai est de detecter la dernière occurence d'une chaîne de caractères dans le fichier.
Je suis en train de lire la doc de "re" mais il ne me semble pas y avoir ce que je cherche.
Marsh Posté le 20-01-2010 à 11:42:51
Tangrim a écrit : Pour les problèmes de suppression de lignes je comptais déjà passer par quelque chose de la sorte, le problème que j'ai est de detecter la dernière occurence d'une chaîne de caractères dans le fichier. |
cette occurence arrive dans toutes les lignes jusqu'à ce qu'elle n'arrive plus, ou bien c'est plus pifométrique, genre elle peut arriver n'importe où?
Et la chaîne à checker, c'est quel genre, elle a quelle tête?
Marsh Posté le 20-01-2010 à 12:07:51
Elle peut arriver n'importe où, et elle n'est pas dans toutes les lignes.
Elle ressemble à:
- 15:53:15 (logmount) TIMESTAMP 10/1/2010
Comme la chaîne "TIMESTAMP" est la seule spécifique à cette ligne, j'étais parti pour detecter le dernier TIMESTAMP du fichier et effacer cette ligne, puis tout ce qui suit.
Marsh Posté le 20-01-2010 à 12:15:46
Tangrim a écrit : Elle peut arriver n'importe où, et elle n'est pas dans toutes les lignes. |
La ligne même ne doit pas être inclue?
Marsh Posté le 20-01-2010 à 12:37:45
ReplyMarsh Posté le 20-01-2010 à 13:59:30
Tangrim a écrit : Si si. |
bah étant très feignant je dirais
Code :
|
il y a sûrement des erreurs, c'est pas testé du tout, mais ça devrait être un truc du style.
Marsh Posté le 20-01-2010 à 14:33:51
Il y a une erreur de synthaxe quelque part mais je crois avoir pigé le principe, merci beaucoup pour ton aide.
Marsh Posté le 20-01-2010 à 15:55:04
Ça fonctionne :
Code :
|
Marsh Posté le 22-01-2010 à 14:05:53
J'arrive après la discussion... mais la création d'un fichier temporaire passe plutôt par un module spécialisé en Python : http://docs.python.org/library/tempfile.html, non ?
Marsh Posté le 03-02-2010 à 13:53:25
suizokukan a écrit : J'arrive après la discussion... mais la création d'un fichier temporaire passe plutôt par un module spécialisé en Python : http://docs.python.org/library/tempfile.html, non ? |
Je suis en train de regarder ça, ça semble plus elegant que mon tempo en effet.
Merci.
Marsh Posté le 11-07-2010 à 10:26:15
Bizarre vos trucs me paraissent bien compliqués.
J'aurais à priori chargé, splitté sur le retour à la ligne, parcouru à l'inverse par indice pour retenir l'indice voulu et juste écrit la partie [ :indice ].
Marsh Posté le 13-07-2010 à 22:18:01
C’est en effet compliqué, à cause du fait que le fichier est considéré comme constitué de lignes, alors que c’est essentiellement une succession de caractères.
Code :
|
L'ouverture en mode binaire est obligatoire sinon seek() risque de ne pas positionner au bon endroit.
Si le fichier est trop gros pour ne pas épuiser la RAM, on pourra facilement adapter ce code pour rechercher dans le fichier par morceaux.
Marsh Posté le 20-01-2010 à 10:59:17
Bonjour,
j'ai un petit problème en python:
je cherche à effacer toutes les lignes d'un fichier après la dernière occurence d'une chaîne de caractères (ligne où se trouve cette chaîne comprise).
Je suis en train de chercher depuis un bon moment la demarche à adopter pour réaliser ça où le module qui pourrait m'aider.
Merci de votre aide.
---------------
Des Bisous et des nounours ! | Internet 2025 | Dungeon-Generator