Seite 1 von 1

Korrekt auf File ist verfügbar testen

Verfasst: Dienstag 28. Juni 2011, 23:00
von mzh
Liebes Forum
Wie teste ich korrekt darauf, ob sich ein bestimmtes File schon auf dem System befindet. Wenn ja, fortsetzen, wenn nein runterladen. Ich hab gelesen, es empfielt sich das mittels try / except to realisieren:

Code: Alles auswählen

def do_function(target):
    try:
        open('../files/' + target + '.ext')
    except IOError as e:
        download(target)

def download(target):
    data = urllib.urlopen('www.data.com/' + target + '.ext')
Macht das ungefähr Sinn so?

Re: Korrekt auf File ist verfügbar testen

Verfasst: Dienstag 28. Juni 2011, 23:10
von Dauerbaustelle
`os.path.exists(filename)`. Außerdem solltest du zum Dateipfade-Zusammenfügen `os.path.join` verwenden.

Re: Korrekt auf File ist verfügbar testen

Verfasst: Mittwoch 29. Juni 2011, 05:53
von cofi
Nicht vergessen die Datei zu schliessen. Auf CPython funktioniert das vllt noch aber auf allen anderen bleibt die Datei erstmal ne ganze Weile offen.

Mit dem `open` überprüfst du auch, ob du die Datei lesen kannst, das ist je nachdem was du erreichen willst also nicht unbedingt gleichwertig zu `exists`.

Re: Korrekt auf File ist verfügbar testen

Verfasst: Montag 11. Juli 2011, 09:01
von mzh
Ich sehe.
Wieso ist es besser das mittels try/except zu machen, anstelle einfach if/else zu bemühen?

Re: Korrekt auf File ist verfügbar testen

Verfasst: Montag 11. Juli 2011, 09:49
von senft
Das hängt ganz davon ab, was genau du realisieren möchtest.
Verwendest du ein try/catch und fängst einen IOError ab, heißt das entweder, dass die Datei nicht existiert, oder du keine Lese/Schreibrechte hast.
Wenn es dir egal ist, ob du die nötigen Rechte hast, sollte ein einfaches `exists` reichen.