Python Pfade in Cronjob ausgeführter Datei

DMHas

Lt. Commander
Registriert
Sep. 2005
Beiträge
1.618
Hallo zusammen,

ich rufe per Cronjob eine kleine Datei (auf dem Raspberry Pi). Diese schreibt - zu Testzwecken die aktuelle Uhrzeit - in eine Log-Datei. Jedoch wird die Log-Datei immer unter "/home/pi" abgelegt, nicht im Pfad in dem das Programm liegt (so wie angedacht). Wenn ich das richtig nachgelesen habe, liegt es an dem relativen Pfad, da das Script unter root läuft und daher os.getcwd() nicht den vollständigen Pfad ausgibt. Wenn ich den Pfad absolut in de Datei schreibe funktioniert es problemlos.
Hat jemand noch eine Idee, wie ich den Pfad übergeben kann. So das das Programm aus jedem Ordnerpfad ohne den absoluten Pfad angeben zu müssen, läuft?

Python:
#!/usr/bin/python

from datetime import datetime
import os

pfad = os.getcwd()              # Pfad des Programmes auslesen

daten = open(pfad + "/log_temp_menuetlich.log","a+")            # Pfad + Datei öffnen
datum = datetime.now()

daten.write(str(datum) + "\n")                                  # aktuelle Zeit eintragen Datei schreiben
daten.close()                                                   # Datei schließen
 
probier mal
Python:
path = os.path.dirname(__file__)

das ist das verzeichnis, in dem die auszuführende datei liegt. und ansonsten os.path.join() und with benutzen:

Python:
#!/usr/bin/python

from datetime import datetime
import os

with open(os.path.join(os.path.dirname(__file__), "log_temp_menuetlich.log"), "a+") as f:
    datum = datetime.now()
    f.write(str(datum) + "\n")

os.path.join() macht das pfad-handling cross-plattform kompatibler (man muss sich nich um / oder \ kümmern, bzw. muss sich generell nicht um trennzeichen kümmern) und der context-manager mit with kümmert sich (auch im fall eines fehlers) um das schliessen der datei.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: DMHas und GTrash81
Vielen Dank an alle für die Rückmeldungen!

@cloudman: Deine Variante funktioniert perfekt.
@0x8100: Leider gibt das Script den Fehler, aus den Pfad nicht zu finden.
File "/home/pi/python/ambient_programm/cron_temp_stuendlich.py", line 6, in <module>
with open(os.path.join(os.path.dirname(file), "log_temp_stuendlich.log", "a+")) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/home/pi/python/ambient_programm/log_temp_stuendlich.log/a+'
Traceback (most recent call last):
File "/home/pi/python/ambient_programm/cron_temp_stuendlich.py", line 6, in <module>
with open(os.path.join(os.path.dirname(file), "log_temp_stuendlich.log")) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/home/pi/python/ambient_programm/log_temp_stuendlich.log'
 
habs in meinem post gefixt, klammer war falsch gesetzt.
 
  • Gefällt mir
Reaktionen: DMHas
Zurück
Oben