bonjour
j'ai besoin d'ins�rer ou de modifier une ligne dans un fichier.
Existe-t-il une fonction ou une m�thode qui fasse �a avec un argument du genre "num�ro de ligne" ?
Je ne trouve pas la r�ponse.
merci
bonjour
j'ai besoin d'ins�rer ou de modifier une ligne dans un fichier.
Existe-t-il une fonction ou une m�thode qui fasse �a avec un argument du genre "num�ro de ligne" ?
Je ne trouve pas la r�ponse.
merci
Bonjour,
Pour mes petits besoins perso, jusqu'� pr�sent je codais en Perl.
Je passe un peu � Python, par obligation, car de vieux modules Perl ne sont plus port�s dans les nouvelles versions...
Mais la syntaxe de Python est tellement �tendue, que plut�t que de rechercher dans la doc Python, je passe par ChatGpt.
Il n'est m�me pas n�cessaire de se connecter, voici ce que �a donne, c'est �poustouflant
Bonjour humain, je suis un chatbot IA, mod�le GPT-4.1 nano.
En python, comment se positionner sur une ligne dont on conna�t quelques mots ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Bonjour ! En Python, pour se positionner sur une ligne spécifique en utilisant quelques mots clés ou une partie du texte, vous pouvez utiliser la méthode find() ou index() sur une chaîne de caractères. Ces méthodes vous permettent de rechercher la position d'une sous-chaîne dans une chaîne plus grande. Voici un exemple simple : si vous avez un texte et que vous souhaitez trouver la position d'une ligne contenant un mot particulier, vous pouvez faire quelque chose comme ceci : texte = """Première ligne avec un mot clé Deuxième ligne sans Troisième ligne avec le mot clé aussi""" # Rechercher la ligne contenant 'mot clé' for ligne in texte.split('\n'): if 'mot clé' in ligne: print("Ligne trouvée :", ligne) # Si vous souhaitez connaître la position dans le texte position = texte.find(ligne) print("Position dans le texte :", position) break Ce code parcourt chaque ligne du texte, cherche celle qui contient le mot ou les mots que vous connaissez, et affiche la ligne ainsi que sa position dans le texte. Si vous avez besoin d'une recherche plus avancée ou de vous positionner dans un fichier, n'hésitez pas à me donner plus de détails, je serai ravi de vous aider davantage !ET comment modifier cette ligne une fois trouv�e ?
Bonjour ! Pour vous aider au mieux, pourriez-vous pr�ciser de quelle ligne il s'agit ou dans quel contexte vous souhaitez la modifier ? Je suis l� pour vous guider �tape par �tape. N'h�sitez pas � me donner plus de d�tails, et je ferai de mon mieux pour vous accompagner avec plaisir !En python, Je voudrais modifier la ligne trouv�e par un mot cl�
Bonjour ! Je suis heureux de vous aider avec votre script Python. Si vous souhaitez modifier une ligne dans un fichier en fonction d'un mot-cl�, voici une m�thode simple et efficace :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 # Chemin vers votre fichier fichier = 'votre_fichier.txt' # Mot-clé à rechercher mot_cle = 'votre_mot_cle' # La nouvelle ligne que vous souhaitez insérer nouvelle_ligne = 'Ceci est la nouvelle ligne.' # Lire le contenu du fichier with open(fichier, 'r', encoding='utf-8') as file: lignes = file.readlines() # Modifier la ligne contenant le mot-clé for i, ligne in enumerate(lignes): if mot_cle in ligne: lignes[i] = nouvelle_ligne + '\n' # Ajoutez '\n' si nécessaire break # Si vous ne voulez modifier que la première occurrence # Écrire le contenu modifié dans le fichier with open(fichier, 'w', encoding='utf-8') as file: file.writelines(lignes) print("La ligne a été modifiée avec succès.")Ce script ouvre votre fichier, recherche la premi�re ligne contenant le mot-cl�, la remplace par la nouvelle ligne, puis sauvegarde le tout. Si vous souhaitez modifier toutes les lignes contenant le mot-cl�, vous pouvez enlever le
break
.
N'h�sitez pas � me donner plus de d�tails si vous avez besoin d'une adaptation sp�cifique ou si vous souhaitez modifier plusieurs lignes. Je suis l� pour vous aider avec plaisir !Maintenant, toujours en Python, je voudrais ins�rer une ligne � partir de celle trouv�e avec un mot cl�
Bonjour ! Je suis ravi de pouvoir vous aider avec votre question en Python. Si vous souhaitez ins�rer une ligne dans un fichier � partir de celle trouv�e avec un mot-cl�, voici une approche simple et efficace :
Lire le contenu du fichier ligne par ligne.
Chercher la ligne contenant le mot-cl�.
Ins�rer la nouvelle ligne apr�s cette ligne.
R��crire le contenu modifi� dans le fichier.
Voici un exemple de code pour illustrer cela :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 mot_cle = "votre_mot_clé" ligne_a_inserer = "Ceci est la nouvelle ligne à insérer.\n" # Lire le contenu du fichier with open('votre_fichier.txt', 'r') as fichier: lignes = fichier.readlines() # Créer une nouvelle liste pour le contenu modifié nouvelles_lignes = [] # Parcourir chaque ligne pour trouver le mot-clé for ligne in lignes: nouvelles_lignes.append(ligne) if mot_cle in ligne: # Insérer la nouvelle ligne après celle contenant le mot-clé nouvelles_lignes.append(ligne_a_inserer) # Écrire le contenu modifié dans le fichier with open('votre_fichier.txt', 'w') as fichier: fichier.writelines(nouvelles_lignes)Bon je n'ai pas test�, j'ai eu l'occasion de lui demander une regex (expression r�guli�re = syntaxe � dormir deboutMerci, je vais essayer tout �� !
Avec plaisir ! Je suis ravi de pouvoir vous aider. N'h�sitez pas si vous avez besoin de quoi que ce soit d'autre. Bonne chance et prenez plaisir dans votre d�marche !), ChatGpt m'a scotch�
Je l'utilise aussi avec connexion : https://auth.openai.com/log-in, �a me permet de conserver mes p�r�grinations...
Salut,
L'utilitaire Linux qui fait cela s'appelle sed... et vous avez une mouture pythonsed programmable ou utilisable en ligne de commande.
Si voulez coder cela par vous m�me, il faut prendre le temps d'ouvrir un tuto histoire de comprendre ce qu'est un fichier "texte", les op�rations qui permettent de lire/mettre � jour/... et agencer le tout en boucle et conditions.
Un fichier "texte" est une s�quence d'octets o� la "ligne" est d�finie par le marqueur de fin de ligne.
Les lignes �tant d'une longueur quelconque, afficher la Ni�me ligne suppose avoir lu (et compt�) les N-1 lignes pr�c�dentes.
Cela implique aussi qu'on ne peut pas modifier un fichier "texte": on pourra seulement cr�er une nouvelle mouture contenant les mises � jour.
Rien de tr�s difficile, juste des bases.
La syntaxe du langage est assez simple.... Ce sont les fonctionnalit�s des diff�rentes biblioth�ques qui sont nombreuses.
Pour le reste ChatGPT essaie juste de r�pondre � la question qui a �t� pos�e: si elle ne correspond pas � celle du PO, c'est tant pis....Il ne faut quand m�me pas oublier que programmer c'est plus de temps pass� � comprendre question ou probl�me � r�soudre qu'� �crire la solution *et* s'assurer que la solution est correcte.
- W
Hello,
Quelle est la taille et le type du fichier ?j'ai besoin d'ins�rer ou de modifier une ligne dans un fichier.
Oui selon la taille la m�thode diff�re...Existe-t-il une fonction ou une m�thode qui fasse �a avec un argument du genre "num�ro de ligne" ?
Celui qui trouve sans chercher est celui qui a longtemps cherch� sans trouver.(Bachelard)
La connaissance s'acquiert par l'exp�rience, tout le reste n'est que de l'information.(Einstein)
Bonjour
Parce qu'� la base, cela n'est pas possible.
Un fichier informatique n'est qu'une suite de donn�es binaires (0 et 1). Dans la majorit� des cas, ces donn�es ne sont pas lisibles parce qu'elles ne sont pas associ�es � du caract�re. On parle alors de "fichier binaire" (mp3, avi, mp4, pdf, docx, xlsx, jpg, dll, etc, etc, etc). Ces fichiers sont destin�s � �tre trait�s par des logiciels d�di�s qui, eux, savent g�rer leur contenu.
Il existe toutefois une petite cat�gorie de fichiers o� ces donn�es sont group�es par 8, parfois par 16, et o� chaque groupement est associ� � une repr�sentation visuelle sous forme de caract�re. On parle alors de "fichier texte". Et dans ces fichiers texte, faits pour �tre lisibles par un humain, il existe un caract�re particulier signifiant "ceci est la fin de la ligne". Et quand l'�diteur voit ce caract�re il place alors le curseur sur la ligne suivante. Ce qui produit � l'�cran ce beau rendu sous forme de "lignes". Mais ce rendu reste une simple illusion car en natif le fichier reste intrins�quement, une suite de bits.
Partant de l�, du point de vue informatique, il n'y a pas de notion de "ligne" ou "num�ro de ligne". Tu veux lire un fichier, tu le parcours caract�re par caract�re (car fort heureusement les outils de lecture sont adapt�s � ce groupement de 8 ou 16). Et quand tu trouves ce fameux caract�re particulier tu comptes "+1" ce qui te permet de calculer ce fameux num�ro de ligne. Et si par hasard tu te mets � �crire au lieu de lire, tu ne feras que remplacer ce qui est par ce que tu �cris (pas de notion "d'insertion").
Apr�s il existe des m�thodes. Exemple lire un fichierX d'un c�t� et �crire un fichierY de l'autre. En �crivant plus dans Y que ce que tu lis dans X tu te retrouves avec un fichier Y "correspondant" au fichier X modifi�. Ensuite ne reste qu'� remplacer X par Y. Et donc il existe des outils qui englobent ces m�thodes dans un "packaging". Surtout dans le monde Unix/Linux o� toute la configuration est g�r�e par des fichiers textes (modifiables donc par l'admin s'il en a envie) et donc o� il existe beaucoup d'outils d�di�s � manipuler et g�rer ce type de fichiers. Exemple "awk", qui permet de cr�er un algorithme de programmation permettant de traiter � son go�t chaque ligne lue et chaque mot de la ligne. Ou "sed" mentionn� par wiztricks permettant lui-aussi de traiter un fichier ligne par ligne. Ou encore "cut" permettant de couper un fichier de fa�on verticale, "grep" permettant de chercher les lignes contenant une certaine valeur, "tr" permettant de remplacer tout caract�re faisant partie d'une suite X par le caract�re situ� � sa m�me position dans une suite Y, "paste" permettant de coller en vertical plusieurs fichiers et d'autres encore.
Et il se trouve (je ne connaissais pas mais je viens de l'apprendre) que Python int�gre ce fameux "sed" dans un module permettant d'int�grer des commandes "sed" dans un code Python (car effectivement "sed" est vraiment un outil pas mal puissant).
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]
On peut consid�rer qu'un octet n'est qu'une suite de 0 et de 1 pour �merveiller les gosses mais un ficher est toujours une suite d'octets (depuis au moins le milieu des ann�es 80).
On peut les afficher sous leur repr�sentation hexad�cimale (ou enti�re) puisque ce sont des nombres dans 0..255:
Et puisque je peux les afficher, ils sont "lisibles" (par l'ordinateur).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 >>> from textwrap import wrap >>> b = bytes(range(255)) >>> print('\n'.join(wrap(b.hex(), width=70))) 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122 232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445 464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768 696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b 8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadae afb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1 d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4 f5f6f7f8f9fafbfcfdfe >>>
Mais je ne sais pas forc�ment en interpr�ter le contenu (et si je peux afficher un texte �crit en arabe ou en mandarin, je ne saurais pas le lire...)
wikipedia est une bonne source d'information sur tout ��... Quel est l'int�r�t d'en faire des caisses sans avoir pris le temps de les consulter pour s'assurer qu'on aurait un minimum de valeur ajout�e?
- W
Bonjour.
En effet, je viens d'en lire le contenu concernant "fichier texte" et "fichier binaine".wikipedia est une bonne source d'information sur tout ��...
Si nous partons sur ce principe, 99,991 % de nos interventions consisteraient � donner des liensQuel est l'int�r�t d'en faire des caisses sans avoir pris le temps de les consulter pour s'assurer qu'on aurait un minimum de valeur ajout�e?![]()
#Rien de nouveau sous le soleil, tout est vanit� comme courir apr�s le vent!
Envie de d�velopper pour Android avec Python? Pensez � Kivy
Kivy c'est aussi �a: https://www.youtube.com/@MPython_Alaplancha
Lorsqu'il s'agit de d�butants, ce qu'on trouve dans les tutos ou des articles publi�es sur le web ont l'avantage d'�tre assez complets et bien r�dig�s.
La difficult� (qu'ils rencontrent) est de trouver les bons mots clefs... et ce qu'on peut apporter, c'est justement ce background technique qui permet de "mieux" poser le probl�me.
On n'apprend pas � programmer sans essayer de coder soi-m�me, tout comme on n'apprend pas des concepts sans les triturer dans tous les sens en faisant des recherches suivant les questions qu'on se pose.
On peut bien sur se faire plaisir en montrant comme on sait coder ou r�diger et �a peut �tre tr�s instructifs pour les moins d�butants.
Je ne suis plus "d�butant". J'ai r�dig� suffisamment de pages de tutos/documentation pour savoir l'effort que repr�sente ce genre d'�criture et les difficult�s qu'il peut y avoir pour couvrir un sujet.
Du coup, une r�ponse donnant un point de d�part et des r�f�rences � approfondir sont largement suffisants et respectueuse du temps pass� par d'autres � mettre tout un savoir profitable sous forme d'articles/tutos/...
- W
Euh... non. Par exemple un fichier pcap contient dans son header des informations regroup�es sur 3 bits. Un gif a des informations sur 9 bits. Un inode Unix stocke le type de fichier qu'il porte sur 4 bits. Et si on entre dans le domaine de la compression... Ce n'est pas parce que toi tu les lis par groupes de 8 que leurs donn�es sont forc�ment par groupes de 8.
Alors tu ne les affiches pas directement, tu passes par un outil particulier qui convertit le binaire en hexa. Et quand je disais "pas lisible" je sous-entendais "pour un humain". Je ne pensais pas avoir besoin de te le faire remarquer surtout quand je dis quelques mots plus loin que les programmes (sur ordinateur, je pr�cise vu que pour toi cela semble n�cessaire) savent les lire.
Oui allez vas-y, pinaille pinaille. Moi non plus certains fichiers de configuration Unix je ne sais pas les lire. Ils contiennent des mots clefs pr�cis d�finissant des actions ou des param�tres et il faut la doc pour les comprendre. Si toi tu ne sais pas lire un texte en mandarin, un mandarin lui saura le lire et donc le consensus uniform�ment admis est de dire que ce fichier, m�me si toi particuli�rement tu ne sais pas le lire, est quand-m�me admis comme �tant "lisible"
Ah pour toi, rien, absolument rien. Mais comme ce n'est pas � toi que je parle mais � noradan (c'est indiqu� par le fait que je le cite) je ne vois pas ce que tu viens ramener ton grain de sel. C'est � lui, pas � toi, de dire si ces caisses l'int�ressent ou pas (sans exclure le fait que vu le d�tail qui en est fait sur wikipedia que tu cites, ce r�sum� que j'en ai fait puisse aussi en int�resser d'autres). Donc si toi �a ne t'int�resse pas, tu es absolument libre d'aller voir ailleurs si j'y suis.
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]
Le fichier restera une suite d'octets.
D'ailleurs les op�rations de lecture ou d'�criture se font en nombre d'octets (pas en nombre de bits).
Apr�s on peut d�couper cette suite d'octets en autre chose... mais � la base, c'est et �a reste une suite d'octets(*).
Si vous vouliez vous adresser � noradan, vous lui auriez envoy� un message priv�...
Et si vous ne supportez pas qu'on vous signale que vous avez �crit des �neries, c'est votre probl�me.
J'esp�re qu'il ne vous a pas attendu pour trouver une solution: les indications d�j� donn�es n'�taient pas si mauvaises.
Bonne nuit.
- W
(*) edit: C�t� disque un ficher sera une suite de blocs (non contigus). La taille d'un bloc sera un multiple de 512 octets. Le pilote disque lit/�crit (au moins) un bloc entier pour extraire/ins�rer les quelques octets demand�s.
Si un ficher "contient' 12 octets, il occupera un bloc entier. Si les blocs font 512 octets, 500 octets seront inutilis�s.
Pour r�aliser l'illusion fichier = suite d'octets, il faudra noter la taille (en octets) du fichier dans les metadata... histoire d'interdire la lecture des octets apr�s le 10i�me ou savoir o� faire un ajout de donn�es..
Partager