Python auf DS: Unterschiedliches Verhalten bei Ausführung via Job oder manuell

Status
Für weitere Antworten geschlossen.

Asthos

Benutzer
Mitglied seit
18. Aug 2017
Beiträge
18
Punkte für Reaktionen
0
Punkte
1
Hallo in die Runde,

mir ist heute beim Erstellen/Testen etwas aufgefallen, was ich mir nicht erklären kann.
Ich konnte den Fehler auch eingrenzen und auf folgendes Python-Script "test.py" runterbrechen:
Rich (BBCode):
#!/usr/local/bin/python3
import os
print(os.path.abspath("."))

wenn ich deisen Code via User ausführe (SSH) sieht es so aus:
Rich (BBCode):
Job@DS:~/Projekt$ python3 test.py
/volume1/homes/Job/Projekt
man erkennt, dass der Befehl os.path.abspath(".") den aktuellen Pfad ausgibt.

Nun wollte ich diese Datei via Aufgabenplaner ausführen lassen,
dazu habe ich folgendes benutzerdefiniertes Script im Aufgabenplaner:
Rich (BBCode):
/usr/local/bin/python3.5 /volume1/homes/Job/Projekt/test.py >> /volume1/homes/Job/Ausgabe/py_testfile.txt
Wenn ich es laufen lasse, kommt dann aber als Ergebnis:
Rich (BBCode):
/volume1/homes/Job
D.h. es fehlt der Ordner "Projekt" in dem das Script ausgeführt wird. :confused:

Kennt jemand hier den genaueren Hintergrund, warum auf einmal ein anderer Pfad mitgegeben wird, wenn man einmal per Job es plant.
Es ist etwas unschön, da ich diverse Sachen (.ini lesen und .log-Datei erstellen) dynamisch erzeuge, da Programmierer ja faul sind und Copy-Paste bevorzuge.

Getestet wurde es auf der DS116 falls es noch jemanden interessiert.
 

synfor

Benutzer
Sehr erfahren
Mitglied seit
22. Dez 2017
Beiträge
8.459
Punkte für Reaktionen
1.395
Punkte
288
Die Faulheit fällt dir jetzt auf die Füße. Beim Start über die SSH hast du vor dem Programmstart dafür gesorgt, das ~/job das aktuelle Verzeichnis ist. Tue das auch im Aufgabenplaner. Oder schreibe dein Programm so um, dass es egal ist, welches Verzeichnis das aktuelle ist.
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.164
Punkte für Reaktionen
63
Punkte
68
oder wechsle im Script oder beim Aufruf vorher in das Scriptverzeichnis
 

Asthos

Benutzer
Mitglied seit
18. Aug 2017
Beiträge
18
Punkte für Reaktionen
0
Punkte
1
Wo ist denn da genau mein Fehler?
Wenn ich überSSH drin bin, habe ich dafür gesorgt, dass ich im Ordner "Projekt" bin, also im Unterordner von "Job", denn im Ordner Projekt liegt auch die Python datei. Somit ist das via SSH auch nachvollziehbar, das der Befehl os.path.abspath(".") den Unterordner "Projekt" anzeigt.

Die Frage ist, warum im Aufgabenplaner nicht der Ordener "/volume1/homes/Job/Projekt" mit angezeigt wird, sondern nur der "/volume1/homes/Job" Ordner.
Wird denn jedes Script dass man im Aufgabenplaner ausführt dann direkt im eigenen Home-Verzeichnis ausgeführt, egal wo die Script-Datei liegt?
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.164
Punkte für Reaktionen
63
Punkte
68
Genau, das Arbeitsverzeichnis ist das jeweilige Homeverzeichnis. Das Python Script zeigt ja nur das aktuelle Arbeitsverzeichnis an und das ist da, von wo der Python Interpreter aufgerufen wird und nicht da wo das Script liegt
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat