Seite 1 von 1

Error: Datei gibt es nicht...

Verfasst: Mittwoch 8. April 2009, 15:50
von Civili4n
Hi,
ich wollte in einem Programm ein error einfügen falls die Quelldatei nicht exestiert.
hab jetzt son seit über einer stunde gesucht -.-''
von mir aus haut mich falls es schon einen threat gibt :P

Code: Alles auswählen

import io

source = io.FileIO("C:\\blabla.txt", "r")
file = io.FileIO("C:\\blubb.txt", "a")

count = 0

data=source.read(512)
source.seek(0)
if len(data) ==0:
    print ("Error: The source file is empty!")
else:
    while True:
        data = source.read(512)

        nBytesRead = len(data)    

        if nBytesRead > 0:
            print("loop:", count+1, "BytesRead:", nBytesRead)
            file.write(data)
        else:
            break

        count = count + 1

file.close()
source.close()

Verfasst: Mittwoch 8. April 2009, 15:55
von EyDu
Ich weiß ja nicht, was du mit dem io-Modul vor hast...

Code: Alles auswählen

>>> try:
...   fp = open("test.txt", "r")
... except IOError:
...   print "Argh, Datei ist nicht, Altah!"
...
Argh, Datei ist nicht, Altah!
>>>
Edit: Ausabe um "Altah" erweitert ^^

Verfasst: Mittwoch 8. April 2009, 16:01
von DasIch
Verwende open statt io.FileIO.

Öffne nie Dateien ohne with oder try..finally um sicherzustellen dass die Datei geschlossen wird. In diesem Fall ist contextlib.nested einen Blick wert.

Strings haben eine .format() Methode, die solltest du dir mal anschauen.

Außerdem gibt es +=, -=, *=, /= und //= um Zahlen zu verändern.

Verfasst: Mittwoch 8. April 2009, 18:33
von sma
Wenn es nur darum geht, ob eine Datei existiert:

Code: Alles auswählen

import os
if not os.path.exists("foo.bar"):
    raise Exception("nix foo.bar")
Man sollte vielleicht noch prüfen, ob es eine Datei oder ein Verzeichnis ist und man will vielleicht auch wissen, ob es ein Link ist. Mit `os.stat()` kann man sich gleich einen ganzen Schwung an Informationen auf einmal holen und z.B. die Länge anschauen. Wenn die Datei nicht existiert, gibt es einen `OSError`. An die Länge kommt man aber auch über `os.path.getsize()`.

Stefan