[Python] Lire des caractères dans un fichier

Fermé
Snipouse - 4 sept. 2011 à 01:38
 Snipouse - 5 sept. 2011 à 20:57
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 dimanche 4 septembre 2011 Statut Membre Dernière intervention 27 décembre 2011 15
4 sept. 2011 à 01:44
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
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 dimanche 4 septembre 2011 Statut Membre Dernière intervention 27 décembre 2011 15
Modifié par Helyum le 4/09/2011 à 12:18
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
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 dimanche 4 septembre 2011 Statut Membre Dernière intervention 27 décembre 2011 15
4 sept. 2011 à 19:35
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
Ok, merci beaucoup de ton aide.
0