Längers Warten auf Filesystem möglich?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Marvanek
User
Beiträge: 3
Registriert: Montag 26. November 2012, 10:51

Hallo zusammen,

ich bin eher am Anfang meiner python-Karriere und stehe jetzt vor einem Problem, das sich nicht ohne weiteres durch eine Google Suche beheben lässt:

1. ich lese nacheinander viele files (ganz simpel mit file = open('pfad') ) aus einem Netzwerkordner.

2. In unregelmässigen Abständen erhalte ich folgende Fehlermeldung:
IOError: [Errno 22] invalid mode ('r') or filename: ...

Ich erkläre mir den Fehler folgendermaßen:

Der Fehler tritt auf, weil das filesystem zu träge auf die Anfrage zum Öffnen reagiert.
Dies passiert deshalb unregelmäßig, weil die Netzwerkantwortzeit schwankt, meistens ok ist, aber manchmal eben nicht.

Meine Frage:
Gibt es eine Möglichkeit die Standardzeit die python dem Betriebssystem einräumt auf eine "read" anfrage zu antworten zu erhöhen?

Schon mal Danke für eventuelle Antworten!

Gruß Marvanek
BlackJack

@Marvanek: Python räumt dem Betriebssystem da gar nichts ein, das ruft einfach nur die entsprechende Funktion der C-Bibliothek auf und an der Stelle ist es völlig egal ob die Datei auf einer lokalen Festplatte oder einer Netzfreigabe liegt. Wie lange auf eine Verbindung oder Antwort gewartet wird, ist eine Frage des Betriebssystems. Und auf diese Ebene wollen/sollten sich normale Anwenderprogramme gar nicht hinunter bewegen. Wenn das nicht ordentlich konfiguriert ist, müsste das Problem mit anderen Programmen, die auf die Netzfreigabe zugreifen ja auch auftreten.

Ist es denn tatsächlich so, dass Du die *selbe* Datei mal lesen kannst und mal nicht? Oder ist es immer bei den gleichen Datei(nam)en? Dann wären diese Namen interessant. Wie kommen die Zustande? Enthalten sie Sonderzeichen? Gibt es ein Kodierungsproblem?

Sind die Dateien eventuell Schreibgeschützt, oder hat genau zu dem Zeitpunkt vielleicht ein anderes Programm die Dateien exklusiv geöffnet?
Marvanek
User
Beiträge: 3
Registriert: Montag 26. November 2012, 10:51

@BlackJack: Vielen Dank für die schnelle Antwort.

Ich lese eine Liste aus ca. 100 Dateien ein. Der Fehler tritt entweder gar nicht oder zufällig an irgendeiner Stelle auf.

Ich glaube deshalb, dass es mit dem Dateizugriff auf den Netzwerkordner zusammenhängt, weil der Fehler nicht auftritt wenn ich die Dateien zuerst lokal speichere.

Die Dateien heißen alle gleich, liegen aber im durchnummerierten Ordnern (z.B. 1-99).

Grüße

Marvanek
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Wenn es wirklich daran liegt, könntest du natürlich bei dem Auftreten des Fehlers "kurz warten" und dann den nächsten Leseversuch starten.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Schließt du die Dateien auch wieder? Generell empfiehlt sich das with-Statement zum Öffnen von Dateien und nicht dein ``fp = open(x)``-Ansatz.
Das Leben ist wie ein Tennisball.
Marvanek
User
Beiträge: 3
Registriert: Montag 26. November 2012, 10:51

@sparrow: Die Idee klingt gut. Da hätte ich auch selber drauf kommen können! Danke!

Danke an alle für eure Mühen.

Kann gerne geschlossen werden...
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Mir sieht es ein wenig danach aus, als würdest du irgendwo etwas übersehen oder du hast das Schreiben der Quelldateien noch nicht ganz durchdrungen. Ich würde auf jeden Fall nach einer richtigen Lösung suchen und einem Workaround über das zeitliche Verhalten. Dieser Hack hat ein gutes Potenzial, dass dir da mal etwas um die Ohren fliegt und du nur schwer hinter die Ursache kommst.
Das Leben ist wie ein Tennisball.
Antworten