Seite 1 von 1

with open Pfad MacOS kompilierte App

Verfasst: Donnerstag 11. Mai 2023, 21:28
von mrrockkz
Hallo liebe Phyton-Forum.de-User,

ich habe ein Python-Script bei dem ich auf eine weitere Datei zugreife.

Code: Alles auswählen

with open('datei.txt', 'r') as f:
Mit --add-data wird die Datei nicht mit ins Paket geschrieben, diese kann man ja aber danach einfach in Contents/Resources/ manuell einfügen. Doch was für einen Pfad muss ich im Code angeben, dass dieser sicher gelesen wird (auch falls sich die App nicht in Programme befindet)?

Ich hoffe ihr versteht meine doch recht kompliziert gestellte Frage.

Liebe Grüße

Re: with open Pfad MacOS kompilierte App

Verfasst: Donnerstag 11. Mai 2023, 21:41
von sparrow
Welche Art von Paket baust du?

Re: with open Pfad MacOS kompilierte App

Verfasst: Donnerstag 11. Mai 2023, 23:02
von __deets__
Ein application bundle.

Der übliche Trick besteht im langhangeln am Pfad ausgehend von __file__. Abhängig davon, was du mit macOS machst, kannst du aber auch NSBundle und seine Methoden benutzen.

Re: with open Pfad MacOS kompilierte App

Verfasst: Freitag 12. Mai 2023, 09:27
von mrrockkz
__deets__ hat geschrieben: Donnerstag 11. Mai 2023, 23:02 Ein application bundle.

Der übliche Trick besteht im langhangeln am Pfad ausgehend von __file__. Abhängig davon, was du mit macOS machst, kannst du aber auch NSBundle und seine Methoden benutzen.
Danke dir.

Der Code lautet nun:

Code: Alles auswählen

from Foundation import NSBundle

        bundle = NSBundle.mainBundle()
        file_path = bundle.pathForResource_ofType_(os.path.splitext("datei.txt")[0], os.path.splitext("datei.txt")[1][1:])

        with open(file_path, "r") as f:
Es funktioniert wenn das Script kompiliert ist einwandfrei. Jedoch zeigt mir PyCharm (obwohl ich "pyobjc-framework-Cacoa" in Python Package installiert habe) folgende Error-Meldung: Cannot find reference 'NSBundle' in '__init__.py | __init__.py'

Re: with open Pfad MacOS kompilierte App

Verfasst: Freitag 12. Mai 2023, 09:42
von __deets__
Joa. Das ist halt das drangefrickelte Typechecking von Python. Das benutze ich nicht, und es hat auch außer roten Kringeln und verwirrten Anfängern keinerlei Konsequenzen.

Re: with open Pfad MacOS kompilierte App

Verfasst: Freitag 12. Mai 2023, 10:44
von mrrockkz
__deets__ hat geschrieben: Freitag 12. Mai 2023, 09:42 Joa. Das ist halt das drangefrickelte Typechecking von Python. Das benutze ich nicht, und es hat auch außer roten Kringeln und verwirrten Anfängern keinerlei Konsequenzen.
Alles klar. Danke dir. Dann ist mein "Problem" gelöst :-)