Seite 1 von 1

textfile in exe umschreiben

Verfasst: Montag 10. Februar 2020, 13:43
von toper
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?

Re: textfile in exe umschreiben

Verfasst: Montag 10. Februar 2020, 14:14
von sparrow
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.

Re: textfile in exe umschreiben

Verfasst: Montag 10. Februar 2020, 14:37
von toper
Also ist s nicht möglich die configs in der Datei zu speichern?

Re: textfile in exe umschreiben

Verfasst: Montag 10. Februar 2020, 14:44
von __deets__
Nein. Dazu gibt es die registry oder User-lokale Konfiguration.

Re: textfile in exe umschreiben

Verfasst: Montag 10. Februar 2020, 14:44
von sparrow
@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.