Ich habe eine Python 2.7-GUI für die Interaktion mit einer C-Bibliothek. Ich mache eine Menge Setup in der GUI, dann drücke ich "go". Dann schaue ich mir Ergebnisse an und brauche den Bibliothekscode nicht mehr. Aber ich würde gerne den GUI-Zustand beibehalten, während ich die Bibliothek ändere.
Ich importiere die so
oder dll
mit ctypes
, was offensichtlich die Datei zum Lesen öffnet. Aber ich möchte die Datei explizit schließen, um sie neu zu kompilieren und zu überschreiben. Dann, wenn ich den "Go" -Button erneut drücke, möchte ich die neue Version importieren.
Im schlimmsten Fall könnte ich die Datei in ein tempfile.NamedTemporaryFile
kopieren, aber dann habe ich Handles für Dutzende von Dateien geöffnet, von denen ich nichts aufräumen kann.
Kann ich das Dateihandle irgendwie explizit schließen? Oder kann ich den Inhalt der Datei in ein StringIO
-Objekt lesen und irgendwie ctypes
darauf zeigen?
Sie müssen das Handle für die DLL schließen, damit es zuerst freigegeben wird, damit Sie mit der Datei arbeiten können. Sie müssen das Handle der Bibliothek abrufen und es dann an FreeLibrary
auf Windows, dann können Sie mit der DLL-Datei machen, was Sie brauchen:
Vorschau:
Hier ist eine Test-DLL:
%Vor%Vorschau:
%Vor% Unter Linux verwenden Sie dlclose
, das wäre:
Hier ist ein ähnliches gemeinsames Objekt:
%Vor%Vorschau:
%Vor%