tempfile.mkstemp: Wie auf die Datei zugreifen?

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.
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Montag 19. Mai 2008, 10:01

jens hat geschrieben:IMHO kannst du auch alles im Speicher auspacken und brauchst nicht zwingend eine Datei. Kommt darauf an, wie groß die Daten sind...
Kann ich, nur brauche ich eine Datei für die nachfolgende Bearbeitung, da es eben eine dateibasierte Schnittstelle ist.

Christoph
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 19. Mai 2008, 13:28

Wenn die Bibliothek file-like-Objects verwendet, dann kannst du StringIO verwenden.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Montag 19. Mai 2008, 15:14

Leonidas hat geschrieben:Wenn die Bibliothek file-like-Objects verwendet, dann kannst du StringIO verwenden.
Hm, aber die Bibothek möchte doch eine Datei öffnen, ich benutze ctypes.create_string_buffer().

os.fdopen() scheint der richtige Weg zu sein, aber wie ist das damit, daß die Datei schon geöffnet ist? Im Prinzip öffne ich doch eine schon geöffnete Datei... Ich kapier es nicht.


Gruß,

Christoph
lunar

Montag 19. Mai 2008, 15:26

ChrisGTJ hat geschrieben:
Leonidas hat geschrieben:Wenn die Bibliothek file-like-Objects verwendet, dann kannst du StringIO verwenden.
Hm, aber die Bibothek möchte doch eine Datei öffnen, ich benutze ctypes.create_string_buffer().
Welche Bibliothek ist das denn?
os.fdopen() scheint der richtige Weg zu sein, aber wie ist das damit, daß die Datei schon geöffnet ist? Im Prinzip öffne ich doch eine schon geöffnete Datei... Ich kapier es nicht.
Du öffnest die Datei nicht nochmal, du erzeugst nur ein Dateiobjekt aus dem Dateideskriptor. Das habe ich dir aber schon mal gesagt...
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Montag 19. Mai 2008, 16:02

lunar hat geschrieben:
os.fdopen() scheint der richtige Weg zu sein, aber wie ist das damit, daß die Datei schon geöffnet ist? Im Prinzip öffne ich doch eine schon geöffnete Datei... Ich kapier es nicht.
Du öffnest die Datei nicht nochmal, du erzeugst nur ein Dateiobjekt aus dem Dateideskriptor. Das habe ich dir aber schon mal gesagt...
Ups... :oops: , Du hast recht. aber mal ehrlich: fdOPEN suggeriert doch ein öffnen, oder?

ctypes:

http://docs.python.org/lib/module-ctypes.html

14.14 ctypes -- A foreign function library for Python.
New in version 2.5.

ctypes is a foreign function library for Python. It provides C compatible data types, and allows to call functions in dlls/shared libraries. It can be used to wrap these libraries in pure Python.

Gruß,

Christoph
lunar

Montag 19. Mai 2008, 16:04

ChrisGTJ hat geschrieben:
lunar hat geschrieben:
os.fdopen() scheint der richtige Weg zu sein, aber wie ist das damit, daß die Datei schon geöffnet ist? Im Prinzip öffne ich doch eine schon geöffnete Datei... Ich kapier es nicht.
Du öffnest die Datei nicht nochmal, du erzeugst nur ein Dateiobjekt aus dem Dateideskriptor. Das habe ich dir aber schon mal gesagt...
Ups... :oops: , Du hast recht. aber mal ehrlich: fdOPEN suggeriert doch ein öffnen, oder?
Ja, aber es öffnet nichts. Der Name orientiert sich halt nur am bekannten "open".

Was ctypes ist, weiß ich ;) Ich frage nach der Bibliothek, die du mit ctypes nutzen möchtest, also die Bibliothek, die eine Datei erwartet ;)
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Montag 19. Mai 2008, 16:18

lunar hat geschrieben:
Was ctypes ist, weiß ich ;) Ich frage nach der Bibliothek, die du mit ctypes nutzen möchtest, also die Bibliothek, die eine Datei erwartet ;)
Ich hatte mich schon gewundert... ;)

Die Bibliothek ist selbstgeschrieben, es wird eigentlich nur eine DLL benutzt (die jemand anderes geschrieben hat), um eine binäre Datei auszulesen. Und diese DLL erwartet die Daten in einem Puffer, den ich mit create_string_buffer() herstelle.

Vielleicht könnte man auch direkt aus dem String arbeiten (mit einer anderen ctypes Methode oder StringIO), das müßte ich ausprobieren. Das schöne ist aber eben, daß ich dieser Bibliothek nicht nur die frisch vom Gerät gelesenen Daten übergeben kann, sondern auch eine Datei. So als Entwicklungshilfewerkzeug eben. Darum will ich die Dateischnittstelle schon lassen.

Christoph
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 19. Mai 2008, 16:49

ChrisGTJ hat geschrieben:Das schöne ist aber eben, daß ich dieser Bibliothek nicht nur die frisch vom Gerät gelesenen Daten übergeben kann, sondern auch eine Datei. So als Entwicklungshilfewerkzeug eben. Darum will ich die Dateischnittstelle schon lassen.
Die Datei kannst zu zu Entwicklungsszecken schon lassen, aber es ist sinnvoller wenn du alles was im Speicher funktioniert auch im Speicher lässt um unnötigen Festplatten-IO zu vermeiden für den Produktiveinsatz.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Dienstag 20. Mai 2008, 10:40

Leonidas hat geschrieben:
ChrisGTJ hat geschrieben:Das schöne ist aber eben, daß ich dieser Bibliothek nicht nur die frisch vom Gerät gelesenen Daten übergeben kann, sondern auch eine Datei. So als Entwicklungshilfewerkzeug eben. Darum will ich die Dateischnittstelle schon lassen.
Die Datei kannst zu zu Entwicklungsszecken schon lassen, aber es ist sinnvoller wenn du alles was im Speicher funktioniert auch im Speicher lässt um unnötigen Festplatten-IO zu vermeiden für den Produktiveinsatz.
Nee, falsch verstanden: Ich möchte die Bibliothek so lassen, wie sie ist, weil sie dann als Entwicklungswerkzeug benutzt werden kann (ok, man kann auch einfach ein zweites Interface dranbauen).

Das mit dem Platten-IO im Produktiveinsatz ist ein gutes Argument, werde ich mal drüber nachdenken (aber wie das so ist: schnell fertig werden und für Schönheit keine Zeit, zumal es ein internes Werkzeug ist, das wir da bauen, also auf das Thema Sicherheit & Performance nicht so viel Wert gelegt wird...)

Gruß,

Christoph
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Dienstag 20. Mai 2008, 19:10

So fängt ein Alptraum an ;)
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Mittwoch 21. Mai 2008, 07:31

audax hat geschrieben:So fängt ein Alptraum an ;)
Definitiv ;), aber mit etwas Disziplin kann man das im Zaume halten, auch wenn es dabei suboptimale Lösungen gibt. Man muß sich dessen nur bewußt sein...

Christoph
Antworten