Modification des données d'un fichier

Fabrice -  
Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche à créer un script en python, qui lors de son lancement, pourrait modifier les caractères d'un fichier .txt sélectionné.

Par exemple si dans le fichier texte il y a marqué "bonjour", et bien je souhaiterais que tous les "bonjour" soit remplacé par "bonsoir".

Avez-vous une idée ?

Merci d'avance,

Configuration: Windows / Chrome 83.0.4103.116

11 réponses

  1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour Fabrice,

    C'est logique, relis ton code:

    tu lis tout le fichier avec fichier.read():
    fruits
    Légumes
    tomate

    ensuite, tu remplace fruits par pomme dans texte:
    pomme
    Légumes
    tomate

    et tu écris tout ca dans le 2eme fichier
    (idem avec Légumes: tu remplaces et tu écris tout à nouveau dans le 2eme fichier

    Essaie comme ça:
    W1 = "pomme"
    W2 = "Courgette"
    with open("a.txt") as fichier, open("b.txt", "w") as nouveaufichier:
     texte = fichier.read()
     texte = texte.replace("fruit", W1)
     texte = texte.replace("Légume", W2)
     nouveaufichier.write(texte)
    


    apres, si tu veux détruire le 1er fichier et renommer le 2eme:

    import os
    
    os.remove('a.txt')
    os.rename('b.txt', 'a.txt')
    
    1
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Tu veux dire un truc comme ça:

    remplacement_dict = {'A':['fruit','pomme'], 'B':['fruits','poire']}


    donc si la cle = 'A', la liste de remplacement est remplacement_dict['A']

    donc ['fruit','pomme']

    texte = texte.replace(remplacement_dict[cle][0], remplacement_dict[cle][1])
    1
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour Fabrice,

    As-tu déjà réfléchi, ne serait-ce que sur le papier, aux étapes successives pour en arriver à ce que tu veux ?

    (saisir le nom du fichier, l'ouvrir, le lire, etc ...)
    0
  4. Fabrice
     
    Bonjour,

    Et merci pour ta réponse. Pour les étapes d'ouvertures et de lecture de fichier j'ai déjà quelques commandes élémentaires en tête comme
    fic = open("fichiertest.txt", "r")
    fic = open("fichiertest.txt", "w")
    lecture = fic.read()
    print(fic)
    


    Mais je ne comprends pas vraiment comment modifier des caractères déjà présent dans un fichier.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Tu as bien commencé mais le 2eme fichier doit avoir un nom différent

    En effet, il n'est pas possible de modifier "à la volée" le contenu d'un fichier

    Il faut donc:

    1_ ouvrir le fichier en lecture (fic1 = .............)
    2_ ouvrir un fichier temporaire en écriture (fic2 = ....................)
    3_lire une ligne
    si elle ne contient pas 'bonjour', alors l'écrire dans le fichier tempo.
    sinon, y remplacer 'bonjour' par 'bonsoir' et l'écrire dans le fichier tempo.
    4_fermer les fichiers
    5_detruire le fichier initial
    6_ renommer le fichier tempo. avec le nom initial
    0
  7. Fabrice
     
    Je vais continuer à chercher en suivant tes conseils.

    Merci beaucoup.
    0
  8. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    A tout hasard: remplacer une chaine par une autre:

    ligne = "Bonjour toto"
    ligne = ligne.replace("Bonjour", "Bonsoir")
    print(ligne)   #imprime Bonsoir toto
    
    0
  9. Fabrice
     
    Bonjour Phil_1857,

    Je requière une nouvelle fois ton aide.
    J'ai plus ou moins avancer, mais me heurte à un nouveau soucis.

    W1 = "pomme"
    W2 = "Courgette"
    with open("a.txt") as fichier, open("b.txt", "w") as nouveaufichier:
        texte = fichier.read()
        nouveau_texte = texte.replace("fruit", W1)
        nouveaufichier.write(nouveau_texte)
        nouveau_texte2 = texte.replace("Légume", W2)
        nouveaufichier.write(nouveau_texte2)
    
    


    Avec ce code je devrais pouvoir remplacer les mots "fruits" et "Légumes" en "pomme" et "Courgette'"
    Cependant si mon fichier texte contient les mots :
    fruit
    
    Légume
    
    tomate
    


    Ce code va me renvoyer


    pomme

    Légume

    tomatefruit

    Légume

    tomate


    Alors qu'il devrait me renvoyer uniquement :


    Pomme

    Courgette

    tomate


    J'imagine que je dois mettre en place une boucle for, mais je n'ai pas tellement de piste à l'heure actuelle.

    Merci d'avance pour ton aide.
    0
  10. Fabrice
     
    Merci beaucoup pour ton aide.

    J'aurais une dernière question.

    J'ai des mots qui sont les mêmes au départ mais qui changent en fonction de clés. Est-ce que tu as une idée avec un système de dictionnaire peut être, qui permettrait que pour une clé "A" fruit devienne pomme mais que pour une clé "B" fruit devienne poire ?

    Merci encore.
    0
  11. Fabrice
     
    C'est parfait !

    Merci infiniment pour ton aide.
    0
  12. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Ok, donc tu peux marquer cet appel comme "résolu" :-)
    0