2016-07-19 14 views
-2

Ich möchte eine Einstellungsdatei erstellen, damit mein Python-Skript die Einstellungen nach einem Neustart speichern kann. Ich habe den Befehl f.readline() verwendet, aber die Ausgabe ist unterschiedlich und gibt die Anzahl der gelesenen Zeilen an.readline() gibt keine korrekte Zeile aus

Beispiel: das Textdokument ist

1 
2 
3 

und als ich dieses Skript verwenden aus den Informationen zu drucken.

f = open("test.txt", "r") 

print(f.readline(1)) 
print("-") #i used this to see if the output is blank since it will leave a empty space  
print(f.readline(2)) 
print("-") 
pirnt(f.readline(3)) 
print("-") 

der Ausgang ist:

- 
1 
- 


- 
2 

- 

kann jemand erklären, was ich falsch mache oder wie ich es verbessern kann?

+0

Was ist die erwartete Ausgabe? –

+0

Haben Sie die Dokumente überprüft, um zu sehen, was diese Zahl (2 in f.readline (2) zum Beispiel) darstellt? – ayhan

+0

die 'f.readline()' ohne eine Zahl zu übergeben ** hält ** liest die Datei von wo früher gestoppt wurde. Das bedeutet, dass Sie alle Zahlen weglassen können und Sie bekommen, was Sie wollen. Und Sie haben wahrscheinlich eine leere Zeile oben auf der Ausgabe vergessen. –

Antwort

0

Der Parameter readline ist nicht die Anzahl der Zeilen, die Sie lesen möchten, sondern die Anzahl der gewünschten Bytes.

Um die Datei durch Zeilennummer zugreifen Sie readlines() verwenden können:

f = open("test.txt", "r") 
lines = f.readlines() 
print(lines[0]) 
print("-") #i used this to see if the output is blank since it will leave a empty space  
print(lines[1]) 
print("-") 
pirnt(lines[2]) 
print("-") 

Beachten Sie, dass readlines() auf einmal die Datei holen und nicht Zeile für Zeile. Manchmal ist das nicht das, was du wirklich willst.

1

Die Signatur von readline eine optionale Größe Argument, die Sie festgelegt haben, die jedoch brauchen Sie nicht, wenn Sie die Datei Zeile für Zeile lesen möchten:

f.readline(1) 
#  ^read 1 byte 

Der Parameter ist nicht synonym Zeilennummer wie Sie annehmen.

Da Sie wirklich beabsichtigenZeile für Zeile zu lesen, sollten Sie nicht diese Größe Parameter angeben:

f.readline() # reads one line at a time 

Eine leere Zeile wird wieder '\n' und am Ende der Datei, werden Sie '' haben .