Was ist der richtige Weg, um auf Ressourcen in Python-Programmen zuzugreifen.Zugriff auf Ressourcendateien in Python
Grundsätzlich in vielen meiner Python-Modulen ich am Ende das Schreiben von Code wie folgt aus:
DIRNAME = os.path.split(__file__)[0]
(...)
template_file = os.path.join(DIRNAME, "template.foo")
Welche OK ist aber:
- Es brechen, wenn ich starten Python Zip-Pakete verwenden
- Es ist Standardcode
In Java ich eine Funktion hatte, die genau tat das gleiche --- aber funktionierte sowohl wenn der Code in mehreren Ordnern lag als auch in der Datei .jar
.
Gibt es solche Funktion in Python, oder gibt es ein anderes Muster, das ich verwenden könnte.
OK, das ist eine pythonische Antwort. get_data sieht interessant aus, aber pkg_resources ist sehr einschüchternd, aber ich werde mich definitiv damit beschäftigen, wenn ich mit distutils arbeite, um mein Projekt zu paketieren. –
Ich suche nach einer ähnlichen Lösung. 'get_data' ist großartig, aber ich brauche das dateiähnliche Objekt für diese Datei, nicht den Inhalt der Datei direkt. Gibt es einen eleganten Weg? – zegkljan
@zegkljan Der pythonischste Weg besteht darin, ihn mit BytesIO (StringIO in Py2) zu umhüllen: 'file_like = BytesIO (get_data (__ package__, 'filename.dat'))' ' – cincodenada