Dateigröße auslesen

Code-Stücke können hier veröffentlicht werden.
Antworten
Pit

Hallo,

ich möchte vor dem Übertragen einer Datei deren Größe ermitteln und dann, wenn die Größe überschritten ist, die Übertragung nicht zulassen. Ich habe schon folgende Code eingefügt:

Code: Alles auswählen

if os.path.getsize(tempdir + up_file)>10485760L:
	response.write("Die Datei ist groeßer als 10 MB.")
raise spyceDone
Unter Windows 2000 funktioniert das einwandfrei, jedoch unter Windows 2003 Server erhalte ich eine Fehlermeldung:

Code: Alles auswählen

Spyce exception 
File: c:\\Programme\\ServPDF\\htdocs\\serverapp.spy 
Message: OSError: [Errno 2] No such file or directory: \'c:\\\\Programme\\\\ServPDF\\\\spyce\\\\temp\\\\Exchange_Server_2003.doc\'


Stack: serverapp.spy:66, in (main):
if os.path.getsize(tempdir + up_file)>10485760L:

c:\\Programme\\ServPDF\\python24\\lib\\ntpath.py:229, in getsize:
return os.stat(filename).st_size
Wo kann der Fehler liegen bzw. gibt es Code-Alternativen?

Schönes Wochenende

Pit
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Das sieht aber so aus, das es kein Fehler mit der Größenbestimmung an sich gibt, sondern das der Pfad "tempdir + up_file" einfach nicht existiert!
Benutz doch besser os.path.join( tempdir, up_file )
Lass dir den Pfad doch mal richtig ausgeben und schau nach ob er stimmt.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Pit

Hallo Jens,

vielen Dank für deine Hilfe! Der Pfad existiert, es ist auch alles identisch mit der Windows 2000 installation.

Ich habe den Code jetzt folgendermassen angepasst:

if os.path.join( tempdir, up_file )>10485760L:
response.write("Die Datei ist groeßer als 10 MB.")
raise spyceDone


Unter Win 2000 funktioniert das alles wieder perfekt. Unter Win 2003 kommt
jetzt seltsamerweise bei jeder Datei die Meldung "Die Datei ist größer als 10 MB", auch wenn die Datei nur 5 Kilobyte hat.

Weisst du eine Lösung?

Grüße

Pit
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

:lol:

Du vergleichst ja nicht mehr die größe :D

So sollte es gehn:

Code: Alles auswählen

if os.path.getsize( os.path.join( tempdir, up_file ) )>10485760L:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Pit

Achso :oops:

Aber jetzt :shock: macht der garnix mehr. Selbst unter Win2000 wird nur noch ne leere Seite angezeigt, egal wie groß die Datei ist.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Also da stimmt doch was nicht. Da muß man wohl ein bischen genauer gucken:

Code: Alles auswählen

file_name = os.path.join( tempdir, up_file )
print "Filename:", file_name

print "isfile:", os.path.isfile( file_name )

file_size = os.path.getsize( file_name )
print "Filesize:", file_size

if file_size>10485760L:
    response.write("Die Datei ist groeßer als 10 MB.")
raise spyceDone 
vielleicht auch statt print response.write() nehmen?!?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Pit

Ähhh...jetzt mault er in Zeile 75:

Invalid Syntax

try:

Vorher hat er bei der Zeile nie gemeckert. Könnte ich dir die Datei mal mailen?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wenn sie nicht all zu lang ist, dann poste sie ins Forum, ansonsten schick mit eine PM

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich tippe auf einen Einrückungsfehler.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten