[Python] Lire des caractères dans un fichier

Snipouse -  
 Snipouse -
Bonjour,

Je suis débutant dans le langage python et suis en train de programmer un genre de petit bot si on peut appeler ça comme ça.

Et donc je cherche à ouvrir un fichier texte puis ensuite qu'il lise seulement les 2 ou 3 derrières ligne du document en cherchant un mot là pour l'exemple je vais prendre "Saloute" & "Byebye" et si il lit un de ces mots dans les 2 ou 3 derrière ligne il exécute une chose différente par exemple si il lit "Saloute" il va ouvrir le document bonjour.txt et si il lit "Byebye" il ouvrira Au_revoir.txt et si jamais il trouve aucun mot il ferme le fichier (dans lequel il cherchais "Saloute" ou "Byebye" puis le ré-ouvre quelque seconde après. et ré-fais une analyse puis ainsi de suite.
Voilà le code que j'ai pour le moment: (que j'ai modifier légèrement avec les exemples que j'ai mi ci-dessus)

chaine1 = Saloute
chaine 2 = Byebye
logs = open("logs.txt", "r")


Voilà, mais je bloque pour la suite. J'espère que vous pourriez m'aider je vous en remercierais énormément.

A voir également:

1 réponse

Helyum Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   15
 
Là tu viens d'ouvrir ton fichier texte. Pour le lire, on plutôt le stocker dans une variable il faut mettre la ligne :
contenu = logs.read()


En faisant print(contenu) tu verras donc le contenu de ton fichier txt

Et pour parcourir ligne par ligne il faut faire :
for ligne in logs:


Enfin, pour savoir si une chaine de caractère est présente dans une autre :
if chaine in ligne:
0
Snipouse
 
J'ai fais se que tu as dis donc j'ai se code:

chaine1 = Saloute
chaine 2 = Byebye
logs = open(logs.txt", "r")
contenu = logs.read()
for ligne in logs:
if chaine in ligne:


Et j'ai ce message qui apparait: expected an indented block
0
Helyum Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   15
 
for ligne in logs:
est une boucle, il faut donc indenter tout ce qu'elle contient (avec Tab) et pense aussi à mettre entre guillemets tes chaines de caractère

chaine1 = "Saloute" 
chaine 2 = "Byebye" 
logs = open(logs.txt", "r") 
contenu = logs.read() 
for ligne in logs: 
      if chaine1 in ligne: 
          print("J'ai trouvé Saloute !")
0
Snipouse
 
Ok, j'ai copier se code, mais il ne me marque rien pour me dire qu'il a trouvé alors que je suis sur que se que je lui est demandé de trouvé est dans le fichier y est pour testé.
0
Helyum Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   15
 
Oops, j'ai oublié. Dans ton cas il faudrait utiliser readline() plutôt que read() pour, justement, recevoir les lignes et non pas les caractères seuls :

chaine1 = "Saloute" 
chaine2 = "Byebye" 
logs = open("logs.txt", "r") 
contenu = logs.readlines() 
for ligne in contenu:
    if chaine1 in ligne: 
        print("J'ai trouvé Saloute !")
logs.close


Il ne faut pas oublier non plus de fermer ton fichier à la fin.
0
Snipouse
 
Ok, merci beaucoup de ton aide.
0