Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: probleempje in python  (gelezen 1246 keer)

Offline peer

  • Lid
probleempje in python
« Gepost op: 2022/12/03, 13:36:10 »
Mijn os: Debian 11 KDE PLasma

In python heb ik een script geshreven dat een xml bestand met reminders leest en de inhoud  mbv. notify-send (bash) op het scherm toont. Dit script werkt prima als ik het vanuit de ide (spyder) start , als ik het vanuit de terminal start en als ik het vanuit het menu start met een launcher.
Als ik het script automatisch start in het bootproces dan gaat het mis.


Na zoeken heb ik het probleem gevonden:
Ik gebruik in het script het commando: "os.chdir(os.path.dirname(__file__))" om de werkdirectory van het script gelijk te maken aan de directory van het script zelf.  Dit is momenteel "/home/peer/Temp/Python/reminder". Het xml bestand staat ook in deze directory en wordt dus zonder problemen gevonden.

Echter, als ik het script automatisch laat starten dan geeft het commando "os.chdir(os.path.dirname(__file__))" niet de directory van het script maar mijn homedirectory: "/home/peer". het xml-bestand wordt nu niet gevonden.

Hoe kan ik het script in de juiste directory laten werken zonder deze directory te hardcoderen in het script???

 

Offline MKe

  • Lid
Re: probleempje in python
« Reactie #1 Gepost op: 2022/12/03, 18:21:15 »
Dat kun je beter met een variable doen. Gebruik b.v. de argparser om een cli interface te maken en geef de plaats van de file doe je wilt laden mee tijdens het starten van het script.

Offline peer

  • Lid
Re: probleempje in python
« Reactie #2 Gepost op: 2022/12/04, 09:30:20 »
Ja, dat zou kunnen werken. Ga ik uitproberen.
Inderdaad dit werkt.
Maar ik heb nu een aandere oplossing.
Ik heb een nieuw (leeg) bestand gemaakt met de naam 'reminderPath' en in de gewenste workdirectory geplaatst. Vervolgens laat ik python dit bestand zoeken met 'glob' vanuit mijn homedirectory. Dan door het glob-path te koppelen aan het home-path vind ik mijn gewenste path.   
import os, glob
pad = os.environ['HOME']
os.chdir(os.environ['HOME'])
glob_list  = glob.glob('**/reminderPath', recursive=True)
pad =  os.environ['HOME'] + "/" + os.path.dirname(glob_list[0])

print(pad)

Kost een beetje zoektijd (minder dan een seconde) maar nu doet python al het werk voor mij.

edit:
uiteindelijk toch overgegaan op het opnemen van de workdirectory in het python bestand zelf.
« Laatst bewerkt op: 2022/12/06, 11:11:38 door peer »