Interactief > Andere distributies

probleempje in python

(1/1)

peer:
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???

 

MKe:
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.

peer:
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.   

--- Code: ---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)
--- Einde van code ---

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.

Navigatie

[0] Berichtenindex

Naar de volledige versie