Bilddaten in Liste Speichern

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.
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Montag 21. August 2006, 13:33

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?
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 21. August 2006, 13:40

len() ?

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
midan23
User
Beiträge: 116
Registriert: Sonntag 21. Mai 2006, 21:41
Wohnort: Müchen
Kontaktdaten:

Montag 21. August 2006, 14:57

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
Es geht auch etwas einfacher:

Code: Alles auswählen

import os
f_len = os.stat(...).st_size

print "Dateigrösse : %s Bytes" % f_len
BlackJack

Montag 21. August 2006, 16:53

Oder `os.path.getsize()`.
midan23
User
Beiträge: 116
Registriert: Sonntag 21. Mai 2006, 21:41
Wohnort: Müchen
Kontaktdaten:

Montag 21. August 2006, 20:14

Genau das hatte ich im Sinn ... aber scheinbar gerade nicht im Kopf :lol:
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Montag 21. August 2006, 21:24

Hi,
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.
hjSplit macht in etwa das:

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)
"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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 22. August 2006, 07:26

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 :)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Dienstag 22. August 2006, 07:48

Danke für die super Hilfen, auch an Michael Schnider, da konnte ich mir ein paar ideen klauen.
Jens, du hast richtig gedacht, ich hatte tatsächlich ein file objekt... =)

THX!

EDIT (jens): Full-Quote gelöscht!
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Dienstag 22. August 2006, 10:56

Hi Jens!
jens hat geschrieben:Ihh, Sternchenimport (from os.path import *) Ich hatte mich nämlich die ganze Zeit gefragt, woher/was getsize() kommt/ist...
Ist doch nur für die Demo. :-)
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 :)
Das war auch mein erster Gedanke. Nachdem aber alle auf Dateien umgeschwenkt sind und sich keiner beschwerte, habe ich das auch gemacht. :D
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 ...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 22. August 2006, 11:01

Michael Schneider hat geschrieben:

Code: Alles auswählen

from os.path import *
from tkFileDialog import askopenfilename
from Tkinter import *
...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.

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.
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Dienstag 22. August 2006, 11:05

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.
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 22. August 2006, 11:07

Ich verwende Sternchenimporte nur bei exceptions... Also from exceptions import *

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Dienstag 22. August 2006, 22:57

Das Modul wird doch komplett in `__builtins__` importiert!? Die Namen stehen alle ohne Import zur Verfügung.
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 23. August 2006, 07:11

Hm, neee... Ich meinte meine eigene exceptions.py... Der richtige import bei PyLucid lautet auch from PyLucid.system.exceptions import * :lol:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten