jop, habs nun auch mit dem wb Mode gemacht.
Gibt es was in python wie sizeof() in c, dass einem die grösse eines Objektes anzeigt?
Bilddaten in Liste Speichern
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
len() ?
In einem Dateiobjekt geht das auch mit:
In einem Dateiobjekt geht das auch mit:
Code: Alles auswählen
f = file(...) # FileObjekt erzeugen
f.seek(0,2) # Am Ende der Daten springen
f_len = f.tell() # Aktuelle Position
f.seek(0) # Zurück zum Anfang springen
print "Datei größe in Bytes:", f_len
Es geht auch etwas einfacher:jens hat geschrieben:Code: Alles auswählen
f = file(...) # FileObjekt erzeugen f.seek(0,2) # Am Ende der Daten springen f_len = f.tell() # Aktuelle Position f.seek(0) # Zurück zum Anfang springen print "Datei größe in Bytes:", f_len
Code: Alles auswählen
import os
f_len = os.stat(...).st_size
print "Dateigrösse : %s Bytes" % f_len
Genau das hatte ich im Sinn ... aber scheinbar gerade nicht im Kopf
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Hi,
"wb" und "rb" ist natürlich wichtig, weil Python sonst gefluchtete Sonderzeichen konvertiert. Vor dem Problem steht man auch, wenn man beispielsweise Bilder von einer Webseite laden möchte. Vergisst man da das "wb", wird die Datei etwas größer und das Bild geht den Bach runter.
Grüße,
der Michel
hjSplit macht in etwa das:pyStyler hat geschrieben:das tool was du sucht heisst HJ-SPLIT für WIN un LINUX. Damit kannst du alles teilen und wieder zusammen setzen.
Code: Alles auswählen
from os.path import *
from tkFileDialog import askopenfilename
from Tkinter import *
def erfrage_DateiName():
tk = Tk()
sDateiName = askopenfilename()
tk.destroy()
return sDateiName
sDateiName = erfrage_DateiName()
if sDateiName:
fileEingabe = open(sDateiName, "rb")
lChunks = [fileEingabe.read(700) for i in range(1+getsize(sDateiName)/700)]
fileEingabe.close()
sPfad, sDatei = split(sDateiName)
sDateiBasis, sExtension = splitext(sDatei)
for iChunk in range(len(lChunks)):
sAusgabeName = "%s_%03i%s" % (sDateiBasis, iChunk, sExtension)
fileAusgabe = open(sAusgabeName, "wb")
fileAusgabe.write(lChunks[iChunk])
fileAusgabe.close()
print "Datei", sAusgabeName,"geschrieben. Check Dateigroesse:", getsize(sAusgabeName)
Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ihh, Sternchenimport (from os.path import *) Ich hatte mich nämlich die ganze Zeit gefragt, woher/was getsize() kommt/ist...
Mit os.stat(...).st_size und os.path.getsize() geht es natürlich viel einfacher, als mit meiner Variante... Aber ich dachte irgendwie das ein FileObjekt vorliegt und nicht das man eine echte Datei hat
Mit os.stat(...).st_size und os.path.getsize() geht es natürlich viel einfacher, als mit meiner Variante... Aber ich dachte irgendwie das ein FileObjekt vorliegt und nicht das man eine echte Datei hat
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Hi Jens!
Hatte ja nicht geahnt, dass wirklich jemand ein Bild in ein FileObjekt einliest, nur um es dann in 700-Byte Häppchen wieder zu speichern (entsprechend Beschreibung).
Grüße,
der Michel
Ist doch nur für die Demo.jens hat geschrieben:Ihh, Sternchenimport (from os.path import *) Ich hatte mich nämlich die ganze Zeit gefragt, woher/was getsize() kommt/ist...
Das war auch mein erster Gedanke. Nachdem aber alle auf Dateien umgeschwenkt sind und sich keiner beschwerte, habe ich das auch gemacht.jens hat geschrieben: Mit os.stat(...).st_size und os.path.getsize() geht es natürlich viel einfacher, als mit meiner Variante... Aber ich dachte irgendwie das ein FileObjekt vorliegt und nicht das man eine echte Datei hat
Hatte ja nicht geahnt, dass wirklich jemand ein Bild in ein FileObjekt einliest, nur um es dann in 700-Byte Häppchen wieder zu speichern (entsprechend Beschreibung).
Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
...sagt NEIN zu Sternchenimport! So bequem darf man nicht einmal bei einem Beispiel sein. Anfänger sehen das Beispiel, denken sich nichts dabei und verwenden auch Sternchen beim Importieren.Michael Schneider hat geschrieben:Code: Alles auswählen
from os.path import * from tkFileDialog import askopenfilename from Tkinter import *
Und wir müssen das wieder ausbaden und ständig neu erklären, warum man das nicht tun soll...
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
wer die namespace probleme in c kennt, denkt nich mal über die *sternchen* lösung nach... Finde das ein wenig fahrlässig von Python, sowas zu unterstüzen. Allerdings kann man auch sagen der Programmierer muss wissen was er tut.
Das Modul wird doch komplett in `__builtins__` importiert!? Die Namen stehen alle ohne Import zur Verfügung.