Seite 1 von 1
C Funktion benötigt Filepointer
Verfasst: Samstag 10. Juni 2006, 21:51
von antimicro
Hi,
wie bekomme ich einen Filepointer auf eine Datei?
sowas in der Art wie...
Code: Alles auswählen
import ctypes
datei = file("jo",'w')
p_datei = ctypes.pointer(datei)
ich brauche den Filepointer für eine Funktion in einer vorkompilierten Lib... das ist doch sicher ein alltägliches Problem, oder?
Verfasst: Montag 12. Juni 2006, 07:18
von BlackJack
An den Dateidescriptor kann man herankommen:
Code: Alles auswählen
In [1]:file.fileno?
Type: method_descriptor
Base Class: <type 'method_descriptor'>
String Form: <method 'fileno' of 'file' objects>
Namespace: Python builtin
Docstring:
fileno() -> integer "file descriptor".
This is needed for lower-level file interfaces, such os.read().
Verfasst: Montag 12. Juni 2006, 12:24
von Rebecca
Mit os.open bekommt man beim Oeffnen einer Datei gleich einen Filedescriptor zurueck.
Re: C Funktion benötigt Filepointer
Verfasst: Montag 12. Juni 2006, 12:42
von Joghurt
antimicro hat geschrieben:das ist doch sicher ein alltägliches Problem, oder?
Nein. APIs, die direkt mit FILE* arbeiten, haben den Nachteil, dass die resultierenden Libraries compilerspezifisch sind. Will heißen: Eine DLL, die mit GCC erstellt wurde, kann nicht von einem MSVC-Programm benutzt werden.
Das selbe Problem hast du mit Python, wenn Python z.B. mit MSVC kompiliert wurde. Von daher glaube ich nicht, dass ctypes da etwas für vorsieht.
Du könntest mit Hilfe von SWIG einen Wrapper für die Funktion schreiben, die einen normalen Dateinamen nimmt. (Und sicherstellen, dass du deinen Wrapper mit MSVC kompilierst; damit ist der offizielle Pythoninterpreter kompiliert, IIRC)