2017-05-12 5 views
0

Ich habe eine Datei mit verschiedenen Planeten in jeder Zeile geschrieben. Ich versuche, durch sie mit der mit Funktion und Drucklaufen, so dass die die Ausgabe wie folgt aussieht:durch eine Datei und Druckzeile zu lesen Zeile Python

1 - mercury 
2 - venus 
etc... 

aber meine Ausgabe sieht derzeit wie folgt aus:

(1, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>) 
(2, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>) 
(3, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>) 
(4, '-', <open file 'planets.txt', mode 'r' at 0x7f87dea69660>) 

mein Code ist dies:

with open("planets.txt") as p: 
    i=0 
    for line in p: 
     i += 1 
     print(i, '-', p) 

Wie verwende ich mit falsch oder ist es etwas anderes?

Antwort

0

Sie wollen line nicht p drucken:

with open("planets.txt") as p: 
    i=0 
    for line in p: 
     i += 1 
     print(i, '-', line) #refers to each line in p rather than the file handler 
0

Sie sollten print(i, '-', p) zu print(i, '-', line)

1

Anstatt das zu drucken ändern line Sie drucken p - die Datei selbst:

print(i, '-', p) 

Auch , anstatt eine neue Variable zum Zählen von Zeilen zu erstellen, y

with open("planets.txt") as p: 
    for i, line in enumerate(p, 1): 
     print(i, '-', line) 

UPD: ou enumerate Funktion verwenden können Sie sollten auch die Tatsache berücksichtigen, dass die line Sie werden aus der Datei immer mit einem Newline-Zeichen endet und wenn Sie print(line) es fügt eine weitere Newline, nachdem es von defaulf . So wird die Ausgabe so aussehen:

1 - mercury 

2 - venus 

etc... 

bekommen

1 - mercury 
2 - venus 
etc... 

Sie end='' Argument angeben müssen Funktion zu drucken. Auf diese Weise:

 print(i, '-', line, end='') 
Verwandte Themen