Bonjour
j'ai un fichier texte et je veux supprimer toutes une succession de lignes entre string1 et string 2
y'a t il une fonction python qui fait ca ?
Bonjour
j'ai un fichier texte et je veux supprimer toutes une succession de lignes entre string1 et string 2
y'a t il une fonction python qui fait ca ?
Un fichier c'est du data et tu peux pas "supprimer" du data. Tout ce que tu peux faire, c'est remplacer un data par un autre.
Exemple: t'as un fichier qui contient
Tu vois des lignes et donc tu crois que l'ordi stocke des lignes. Mais en fait, il ne stocke que du caractère bruthello
tout
le
monde
Et c'est ton éditeur qui analyse le fichier et qui se cale sur les "\n" pour t'afficher tes lignes bien proprement. A partir de là tu te rends bien compte que tu peux pas supprimer "tout\nle\n". Tout ce que tu peux faire, c'est remplacer ces octets par d'autres. Exemple: tu écris à la placehello\ntout\nle\nmonde
Et si tu réouvres ton fichier, les lignes "tout" et "le" auront disparues.hello\nmonde
Donc la seule façon que t'aies de supprimer des lignes, c'est de réécrire ton fichier. S'il n'est pas trop gros tu peux le stocker en mémoire avec readlines() qui te renvoie un tableau contenant les lignes de ton fichier sinon faut le faire en lectire/écriture ligne par ligne...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Je propose
Que j'ai essayé sur mon fichier syslog qui contient quelque chose comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 open("/tmp/syslog-modif","w").write(re.compile("mbarek.*wireless",re.M|re.S).sub("",file("/var/log/syslog").read()))
Et voici ce que j'ai en sortie dans /tmp/syslog-modif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Jun 6 11:44:13 mbarek syslogd 1.5.0#1ubuntu1: restart. Jun 6 11:44:13 mbarek anacron[5561]: Job `cron.daily' terminated Jun 6 11:44:13 mbarek anacron[5561]: Normal exit (1 job run) Jun 6 11:44:14 mbarek kernel: [ 95.890723] input: b43-phy0 as /devices/virtual/input/input24 Jun 6 11:44:14 mbarek firmware_helper[6383]: main: error loading '/lib/firmware/b43/ucode5.fw' for device '/devices/pci0000:00/0000:00:1c.3/0000:06:00.0/ssb0:0/firmware/ssb0:0' with driver '(unknown)' .... Jun 7 01:22:48 mbarek kernel: [37459.379754] input: failed to attach handler evdev to device input427, error: -23 Jun 7 01:22:48 mbarek firmware_helper[30780]: main: error loading '/lib/firmware/b43/ucode5.fw' for device '/devices/pci0000:00/0000:00:1c.3/0000:06:00.0/ssb0:0/firmware/ssb0:0' with driver '(unknown)' Jun 7 01:22:48 mbarek kernel: [37459.421943] b43-phy0 ERROR: Firmware file "b43/ucode5.fw" not found or load failed. Jun 7 01:22:48 mbarek kernel: [37459.421952] b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drivers/b43#devicefirmware and download the correct firmware (version 4). Jun 7 01:22:51 mbarek NetworkManager: <WARN> nm_device_802_11_wireless_scan(): (eth1): could not trigger wireless scan: Network is down
ça extrait tout ce qui se trouve entre les chaines "mbarek", et "wireless", chaines comprises.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Jun 6 11:44:13 scan: Network is down
merci bcp c utile cette proposition
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager