2017-02-26 3 views

Antwort

2

a+ Öffnen zum Lesen und Anhänge (am Ende der Datei zu schreiben). Die Datei wird erstellt, wenn sie nicht existiert. Die anfängliche Dateiposition zum Lesen von befindet sich am Anfang der Datei, aber die Ausgabe wird immer an das Ende der Datei angehängt.

Sie sollten f.seek() verwenden, um den Dateioffset an den Anfang der Datei zu setzen.

with open("tryme.txt","a+") as f: 
    f.write(Input + "\n\n\n") 
    f.seek(0) 
    x = f.read() 
    print(x) 

Ausgang:

TYPE: test2 
test1 


test2 

Hoffnung, das hilft.

+0

, die sehr geholfen! danke, ich habe heute etwas neues gelernt. – harthart

1

Nachdem Sie in die Datei geschrieben haben, befindet sich die aktuelle Position Ihres Readers am Ende der Datei. Wenn Sie die gesamte Datei lesen möchten, müssen Sie zum Anfang zurückkehren.

versuchen

Input = input("TYPE: ") 

with open("tryme.txt","a+") as f: 
    f.write(Input + "\n\n\n") 
    f.seek(0,0) 
    x = f.read() 
    print(x) 
+0

Wenn es nicht zu viel verlangt ist, was bedeutet 'f.seek (0,0)'? Was ist der Zweck der zweiten Null? Wie auch immer, danke für die Hilfe! – harthart

+0

https://www.tutorialspoint.com/python/file_seek.htm das zweite Argument von 'seek()' ist woher. Sie gibt an, ob der Offset basierend auf der aktuellen Position basierend auf dem Anfang der Datei oder basierend auf dem Ende der Datei berechnet wird. Es ist standardmäßig 0, es ist also nicht unbedingt notwendig, es einzuschließen, wenn Sie nur zum Anfang springen wollen. –

+0

Um weitere Klarheit zu schaffen, bedeutet 'f.seek (0,0)' in der Datei f von Anfang an einen Offset von 0 vorgeben. Wenn Sie von dieser Position aus schreiben, werden Sie die Datei voranstellen, und wenn Sie lesen, können Sie alles nach dieser Position lesen. Sie können überall in der Datei angeben. Wenn du das Ende willst, kannst du 'f.seek (0,2)' machen oder wenn du n Zeichen nach der aktuellen Position verschieben willst 'f.seek (n, 1)' –

Verwandte Themen