Wie um zu überprüfen, ob eine Datei bereits geöffnet ist (im gleichen Prozess)
Und ich möchte insbesondere erreichen, dass mit der try-catch-Konstrukt.
Diese stellt sich die Frage, deutet darauf hin, dass ich tun kann:
try:
open(fileName, 'wb+')
except:
print("File already opened!")
raise
Jedoch funktioniert es nicht mir. Ich kann öffnen Sie die gleiche Datei mehrfach ohne jedes problem:
fileObj1 = open(fileName, 'wb+')
fileObj2 = open(fileName, 'wb+')
Ist es, weil ich Python 3.5? Oder, weil ich bin mit Raspbian?
Danke für die Hilfe!
Den Grund kann ich eine Datei öffnen, die mehrere Male ist da "nur Windows sperrt Dateien, die beim öffnen zum schreiben. POSIX-Plattformen nicht.". Siehe stackoverflow.com/questions/22617452/... für mehr Informationen.
Wenn Sie in demselben Prozess ausgeführt wie würden Sie nicht wissen, ob die Datei geöffnet ist?
Ich habe ein Skript, das importiert eine externe Bibliothek/Modul zum öffnen und schließen einer Datei. Mein Skript muss einen Weg zu wissen, ob die Datei aktuell geöffnet oder geschlossen ist.
So sind Sie nicht, Sie öffnen die Datei mit
Was meinst du? Ich weiß nicht wirklich brauchen, um die Datei zu öffnen, die in meinem Skript. In meiner Frage, ich mache es, weil ich erwartete, dass er warf einen Fehler aus, wenn die Datei bereits geöffnet war, so lassen Sie mich überprüfen, ob die Datei offen oder geschlossen ist.
Wenn Sie in demselben Prozess ausgeführt wie würden Sie nicht wissen, ob die Datei geöffnet ist?
Ich habe ein Skript, das importiert eine externe Bibliothek/Modul zum öffnen und schließen einer Datei. Mein Skript muss einen Weg zu wissen, ob die Datei aktuell geöffnet oder geschlossen ist.
So sind Sie nicht, Sie öffnen die Datei mit
wb+
? Das bedeutet, dass das Lesen eines Schreibens, aber es wird abgeschnitten die Daten zuerst, würden Sie nur von Ihr Lesen, nachdem Sie etwas geschrieben und suchen wiederWas meinst du? Ich weiß nicht wirklich brauchen, um die Datei zu öffnen, die in meinem Skript. In meiner Frage, ich mache es, weil ich erwartete, dass er warf einen Fehler aus, wenn die Datei bereits geöffnet war, so lassen Sie mich überprüfen, ob die Datei offen oder geschlossen ist.
InformationsquelleAutor maximedupre | 2016-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Öffnen Sie die gleiche Datei, sondern vergeben Sie an die verschiedenen Variablen. Was Sie tun sollten, ist:
Ich Schreibe mit meinem Handy, so das styling kann nicht gut sein, aber Sie erhalten den Punkt. Durch die Art und Weise der
.closed
nur überprüft, ob die Datei geöffnet wurde, die von den gleichen python-Prozess.f=open(f_name, mode) != f_o=open(f_name, mode)
weilopen()
gibt eine Instanz von einige fileobj. Daherfileobj.closed
würde immer bewerten zuFalse
vorausgesetzt, Sie öffnete die Datei auf die Vorherige Zeile?Dieses Verfahren ist zwar weniger flexibel und nicht der
try...except
konstruieren, es ist nicht Plattform-abhängig und funktioniert tatsächlich. Ich weiß nicht, warum wurde es downvoted.Ich habe nicht downvote, aber ich vermute, es ist b/c die meisten Menschen am Ende hier b/c Sie versuchen, um herauszufinden, ob ein verschiedene - Prozess hat die Datei zu öffnen, ist eine viel schwierigere problem. Aber wie im Betreff von Notizen, ist es für die "gleiche Prozess" also diese Antwort ist 100% richtig und sollte nicht downvoted, es ist einfach nicht nützlich für die meisten Menschen 😉
InformationsquelleAutor atayenel
Ich würde vorschlagen, mit etwas wie dieses.
Bearbeitet werden, um fit die OP-spezifische Probleme
rename
einer Datei, selbst wenn es geöffnet ist. Vielleicht, weil mein OS ist Raspbian?Sie können eine Datei umbenennen, wenn es bereits geöffnet worden war.
Vielleicht, daß die Sperre ist OS-spezifisch, wenn ja, dann würde ich einen Blick in die Python-offen-Modi hier tutorialspoint.com/python/os_open.htm und versuchen Sie
os.O_CREAT
und auchos.O_EXLOCK
oder eine Kombination. Lassen Sie mich wissen, wenn diese arbeiten auf Raspbian. Davon gehe ich aus, weil es nicht os-spezifisch.os.O_EXLOCK nicht verfügbar und werden auf einem pi
dann würde ich erstellen und teilen Sie Ihre eigenen Datei obj. Suchen für meine aktuelle Antwort.
InformationsquelleAutor TheLazyScripter