2017-05-05 1 views
2
handle = open('full path/file name.txt') 

file = handle.read() 
print file 

for line in handle: 
    print line 
  1. impression du fichier d'impression correctement
  2. ligne d'impression ne retourne rien. Aucune erreur signalée non plus. Qu'est-ce que je fais mal ici?
+4

Après avoir '.read' le fichier » re déjà à la fin, donc il n'y a plus de 'line's dans' handle' – jonrsharpe

Répondre

0

Vous devez écrire à partir des données lues, handle est un objet fichier.

for line in file: 
    print(line) 
+0

Ceci donnerait chaque * caractère *, pas chaque ligne. o notez que l'escrime de code à triple-backtick est pour la démarque GitHub-flavor, que SO ne supporte pas. – jonrsharpe

+0

file = handle.readlines() ... Je n'ai pas lu complètement le code des personnes. bonne capture –

1

Une fois que vous avez lu le fichier (handle.read()) le fichier atteint sa fin, et ainsi, en essayant de itérer encore, il n'a rien à offrir plus.

Si vous souhaitez utiliser utiliser son contenu à nouveau, vous pouvez les stocker dans la première lecture et utiliser le contenu stocké à chaque fois, ou réinitialiser au début du fichier en utilisant seek:

handle.seek(0) 
0

Le premier point à noter est que votre boucle for comme il est en ce moment ne vous obtiendrez pas le comportement que vous recherchez. Vous devez avoir file = handle.readlines() au lieu de .read(). Sinon, il imprime chaque caractère sur une nouvelle ligne, au lieu de chaque ligne. (Notez que handle.readlines() retourne une liste, et ainsi l'impression (fichier) ligne serait maintenant imprimer cette liste.

Notez également que, après la lecture du fichier en utilisant .read(), vous devez exécuter handle.seek(0) pour être en mesure d'imprimer à partir de cette déposer à nouveau, sinon vous ne recevrez aucune sortie, comme le « lecteur » est à la fin du fichier.

+1

* "Vous devriez lire à la place du fichier." * - non, car (malgré le nom) ce n'est pas un fichier, c'est le * contenu * sous forme de chaîne. Vous pouvez * itérer sur un descripteur de fichier. – jonrsharpe

+0

Cela est vrai. Edité, merci! – Windmill

0

Ci-dessous le code devrait fonctionner pour 2,7

handle = open('full path/file name.txt') file = handle.read() 
handle.seek(0) print file 

for line in handle: 
    print line