Pythonprogramm für alle Windowsbenutzerkonten

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
flyingpy
User
Beiträge: 13
Registriert: Donnerstag 10. Juli 2008, 07:39
Wohnort: Wr. Neustadt

Guten Tag,

ich bin Anfänger und habe mit Python ein Programm geschrieben das Fahrzeuge verwaltet.
Ich verwende Python 3.7, PyQt5 die mit Python mitgelieferte Sqlite3 Datenbank. Mein Betriebssystem ist Windows 10 Home und als Editor verwende ich Spyder3.
Mein Programm kann eine Datenbank anlegen. In der Datenbank habe ich Tabellen angelegt, eine Namens kfzData für die Fahrzeugdaten der einzelnen Fahrzeuge mit den Spalten wie z. B. Fahrzeug-Id, Fahrzeugart, polizeiliches Kennzeichen, Motornummer usw., eine Namens service mit den Spalten Fahrzeug-Id, Datum, Kilometerstand, Text und Betrag und eine Namens tanken mit den Spalten Fahrzeug-Id, Datum, Kilometerstand, Verbrauch/100km, gefahrene Km, Preis/Liter, getankte Liter und Betrag.
Soweit habe ich alles zum laufen gebracht, soll heißen in einer GUI werden alle erforderlichen Daten angezeigt, wenn notwendig kommuniziert das Programm mit dem Benutzer z. B. MsgBox-Hinweis wenn in einer Tabelle kein Fahrzeug ausgewählt um Daten anzuzeigen.
Dann habe ich mit Pyinstaller eine Exe-Datei erzeugt damit ich mein Programm auf anderen Windows PC’s verteilen kann ohne dabei Python installieren zu müssen. Auch das habe ich hinbekommen.
Weiters habe ich mit NSIS einen Installer programmiert.
Der funktioniert auch nur habe ich jetzt das Problem, dass ich nicht weiß wie man es schafft das Programm so zu installieren oder vielleicht zu schreiben das alle Benutzerkonten des PC darauf zugreifen können und dabei für jeden einzelnen Benutzer eine Datenbankdatei angelegt wird um seine eigenen Daten zu speichern. Ich denke das eigentliche Programm sollte unter C:\Programme\KfzManager gespeichert werden. Für jedes Benutzerkonto sollte unter C:\Benutzer\Benutzername\AppData\ ein Ordner angelegt werden wie z.B. KfzManager\UserData in dem dann die Datenbankdatei für den jeweiligen Benutzer gespeichert wird. Aber wie erkennt jetzt mein Pythonprogramm welcher Benutzer gerade darauf zugreift um die Datenbankdatei in AppData anzulegen oder darauf zugreifen zu können?

Ich bin mir sicher ihr habt eine Lösung oder Denkanstoß für mein Problem und ersuche euch daher mir zu helfen. Auch habe ich wie bisher auch schon bei anderen Problemen versucht zu googeln jedoch bin ich nicht fündig geworden.

Vielen Dank für eure Bemühungen im Voraus
Benutzeravatar
sparrow
User
Beiträge: 4535
Registriert: Freitag 17. April 2009, 10:28

Benutzeravatar
sparrow
User
Beiträge: 4535
Registriert: Freitag 17. April 2009, 10:28

Und wenn es wirklich unr für Windows sein soll, dann kannst du auch die Umgebungsvariablen auslesen um direkt nach AppData zu kommen:

Code: Alles auswählen

>>> import os
>>> os.environ["APPDATA"]
'C:\\Users\\sparr\\AppData\\Roaming'
>>> os.environ["LOCALAPPDATA"]
'C:\\Users\\sparr\\AppData\\Local'
>>> 
flyingpy
User
Beiträge: 13
Registriert: Donnerstag 10. Juli 2008, 07:39
Wohnort: Wr. Neustadt

@sparrow
Vielen Dank für deine Antworten sie haben mein Problem gelöst! Genau nach dem habe ich gesucht.
Ich habe

from pathlib import Path

in mein Script eingefügt und dann mit

myHomePfad = Path.home()

das Heimatverzeichnis des aktuellen Benutzers ermittelt und genau dieser String ist was ich gesucht habe!

strHomePfad = str(self.myHomePfad)

Nochmals vielen Dank!!!
Sirius3
User
Beiträge: 18260
Registriert: Sonntag 21. Oktober 2012, 17:20

@flyingpy: den Home-Pfad in einen String umzuwandeln, sollte eigentlich nie nötig sein. Dazu sollte auch nicht der Datentyp im Variablennamen auftauchen. Variablen schreibt man in Python per Konvention klein_mit_unterstrich.
flyingpy
User
Beiträge: 13
Registriert: Donnerstag 10. Juli 2008, 07:39
Wohnort: Wr. Neustadt

@Sirius3: Danke für den Hinweis. Wieder etwas dazugelernt.
Antworten