0
votes

Comment supprimer une ligne d'un fichier texte à l'aide de Python?

J'ai un fichier avec des données sur des étudiants tels que leur nom, son adresse, leur nom, etc. J'ai créé une fonction qui supprimerait une ligne complète à partir d'un fichier texte basé sur le prénom et le nom de famille d'un élève. Cette fonction a fonctionné correctement. Cependant, après, j'ai décidé de le mettre à jour de sorte que si l'utilisateur entrait un nom qui n'était pas dans le fichier, elle imprimerait: l'étudiant introuvable. Cependant, maintenant, même si l'utilisateur Type d'un nom dans le fichier, il imprime toujours: l'étudiant non trouvé ...

Voici mon code: p>

def delete_a_record(filename):

    x=input("Remove First Name:")
    y=input("Remove Last Name:")

    with open(filename, "r") as f:
        lines = f.readlines()
    with open(filename, "w") as f:
        for i in lines:
            t=i.split()
            if t[0]!=x and t[1]!=y:
                f.write(i)
            elif x or y not in t:
                print("Student Not Found")




    f.close()
delete_a_record("mytextfile.txt")


2 commentaires

``! = `vérifie si c'est différent. Vous voulez utiliser '=='


Utilisez si non (t [0] == x et t [1] == y): ou si T [0]! = X ou t [1]! = Y: < / code>


3 Réponses :


0
votes

Probablement parce que vous êtes une ligne itération par ligne, alors même si le nom est dans le fichier .txt chaque fois que le nom ne correspond pas à la ligne actuelle, il imprimera "Étudiant introuvable". Vous devez vous réécrire de la fonction de sorte que l'instruction d'impression ne soit effectuée que lorsque les lignes ont été épuisées et que le nom n'a pas été trouvé.


0 commentaires

0
votes

Pour ce que j'ai signalé (corrigez-moi si je me trompe), je suppose qu'il y a deux problèmes dans votre logique.

  1. Si vous voulez vérifier si x et y ne sont pas dans t vous devez le tester séparatelly, comme: xxx

    la façon dont il est maintenant, si x n'est pas aucun, la condition elif x ou ... Renvoie toujours vrai parce que x évalue à vrai.

    1. Si vous souhaitez vérifier si l'étudiant n'est pas dans l'ensemble du fichier, je pense que vous ne devriez pas tester cela pour chaque ligne que vous lisez. Puisque vous ne savez pas dans quelle ligne l'étudiant pourrait être, peut-être que vous pourriez peut-être réorganiser votre code pour traiter tout d'abord le fichier avant de tester si l'étudiant n'a pas été trouvé.

0 commentaires

0
votes

Si vous souhaitez utiliser votre fonction et recherchez dans ce type (vous ne souhaitez pas modifier votre fonction), vous pouvez mettre vos données dans une liste et rechercher dans cette liste comme le code ci-dessous:

list=['f_Name = Lorem','l_Name = Ipsum']

if "f_Name = "+x in list or "l_Name = "+y in list:
    print("True")

else:
    print("Student Not Found")


0 commentaires