2016-05-29 7 views
2

Ich mache ein Spiel in Python 2.7 zum Spaß und versuche, eine Karte dazu zu machen. Ich benutze Datei-I/O, um die Karte zu lesen und zu schreiben, und habe auch notepad ++ auf stille Aktualisierung eingestellt, aber ich kann die Änderungen nur sehen, wenn mein Programm vollständig ausgeführt wurde und die Datei anzeigen möchte, wie es aktualisiert wird.Eine Datei anzeigen, während sie geschrieben wird - Python

Ich habe diesen Code, die ich mit dem Testen bin:

from time import sleep 

map = open('C:\Users\Ryan\Desktop\Codes\Python RPG\Maps\map.txt', 'r+') 
map.truncate() 
print "file deleted" 

sleep(1) 

worldMap = open('C:\Users\Ryan\Desktop\Codes\Python RPG\Maps\worldMap.txt', 'r') 
for line in worldMap: 
    map.write(line) 
print "file updated" 

worldMap.close() 
map.close() 

Jede Hilfe sehr appricated ist :)

+0

Python schreibt nur in Datei, nachdem es geschlossen wurde – Mixone

+0

mit der .close() - Methode – Mixone

+0

Es wird während der Laufzeit in einem Puffer gespeichert, und wenn .close() aufgerufen wird, wird der Puffer an das Dateisystem gesendet So funktioniert es aufgrund der Implementierung des Bussystems auf Computern, wenn ich mich richtig erinnere, nicht nur ein "fauler" Grund – Mixone

Antwort

4

standardmäßig Python verwendet gepufferte I/O. Dies bedeutet, dass geschriebene Daten im Speicher gespeichert werden, bevor sie tatsächlich in die Datei geschrieben werden. Durch den Aufruf der Methode flush der Datei werden die Daten in die Datei geschrieben.

+0

Muss ich mich auf die Datei konzentrieren, um die Updates zu sehen? Wie es derzeit nicht funktioniert. Ich habe map.flush() und os.fsync (map.fileno()) hinzugefügt, wenn ich eine Änderung sehen möchte – Ryan

+0

Leider weiß ich nicht genau, wie Notepad ++ funktioniert und wie es das Update bekommt. Aber eine schnelle Internetsuche schlägt vor, dass Sie die Registerkarte auf die Registerkarte konzentrieren müssen, um die Updates anzuzeigen. Von der Python-Seite gibt es nicht viel zu tun. –

+2

Die neueste Version, die vor 11 Tagen veröffentlicht wurde, hat eine neue "Monitoring" -Funktion hinzugefügt: https://notepad-plus-plus.org/news/notepad-6.9.2-released.html Ich hoffe, das hilft. –

Verwandte Themen