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
Pythonprogramm für alle Windowsbenutzerkonten
Indem du dir das Heimatverzeichnis des aktuellen Benutzers holst.
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'
>>>
@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!!!
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!!!
@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.