textfile in exe umschreiben

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.
Antworten
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

Hallo zusammen.
Ich habe ein programm geschrieben und möchte es in eine exe umwandeln.
Das Programm benötigt eine config.txt Datei.
Diese habe ich in die exe(one File) eingebunden und kann sie mit

Code: Alles auswählen

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)
auch auslesen. Allerdings kann ich sie nicht ändern.
Ich habe versucht sie mit os umzuschreiben, aber es hat sich nicht geändert.
Weiß jemand wie das geht?
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Das funktioniert nicht. Du kannst auf Dateien in dem "Paket" der Exe-Datei nur lesend zugreifen.
Unter der Haube funktioniert das so, dass ein Archiv in ein temporäres Verzeichnis entpackt wird (inklusiver aller Ressourcen, Interpreter und Module) und dort dann der Start erfolgt.
Wenn du also Daten speichern willst, musst du das an einem anderen Ort tun. Das Heimatverzeichnis des Benutzers bietet sich dafür an.
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

Also ist s nicht möglich die configs in der Datei zu speichern?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein. Dazu gibt es die registry oder User-lokale Konfiguration.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@toper: Doch. Es ist nur nicht möglich sie zu ändern.
Nimm die config.txt aus dem Bündel als Vorlage und speicher individuelle Einstellungen des Benutzers dort, wo sie hingehören: Irgendwo unterhalb seines Heimatverzeichnisses.
Und beim Start deines Programms musst du dann schauen, ob die Config dort existiert und wenn nicht, die Datei aus dem Bündel laden.
Antworten