1
votes

problèmes d'impression suivant () en python 3

J'ai un problème étrange avec la commande print (next ()) en python 3.

Quand je l'utilise pour imprimer sur la console, cela fonctionne parfaitement, mais quand j'essaye d'enregistrer la sortie dans un fichier, ça ne marche pas! Les commandes que j'utilise sont les suivantes:

for item in final:
    fasta = open(fname) # fname is the name if input file
    for line in fasta:
        line = line.strip()
        if item in line:
            item = item.strip()
            print('Line:', line, '\nNext line:', next(fasta)) # this works perfectly!
            print(line, next(fasta), file=open('finalList.fa', "a")) # this one doesn't work!

La sortie que j'obtiens de la dernière partie next (fasta) de la commande est la ligne + 2 au lieu de ligne + 1 , comme celle que j'obtiens de la commande d'impression sur console.

Quelqu'un a-t-il une idée de ce qui se passe sur? Tout conseil sera très apprécié!

Merci à tous d'avance.

Cordialement,

Fernanda Costa


1 commentaires

Oui, je viens de réaliser que c'était le problème !! Je n'ai jamais utilisé la commande next () avant! Merci @Carcigenicate


3 Réponses :


1
votes

Avez-vous essayé de créer une variable et de passer la valeur de next (foo) dans cette variable, et finalement d'imprimer la variable?


2 commentaires

Pas de problème, c'est dommage que les autres, viennent de répéter ma solution pour gagner en réputation


Vous avez publié une réponse assez mal expliquée qui a été formulée sous forme de question. Il serait malhonnête de dire que je «viens de répéter» votre solution alors que j'ai donné beaucoup plus de détails et que j'avais déjà commencé à rédiger ma réponse avant que vous ayez publié la vôtre.




1
votes

Je viens de réaliser que lorsque vous appelez la commande next () en python 3, elle lit correctement la ligne + 1 et lorsque je l'appelle à nouveau, elle considère la ligne suivante (ligne) à la place de la ligne, donc il imprime le suivant (suivant (ligne) qui est la ligne + 2!

J'ai donc corrigé le problème en supprimant simplement l'impression dans la ligne de commande de la console.

Merci à tous et désolé pour le problème noob!


0 commentaires