Seite 1 von 1

Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 13:04
von snowflake
Hallo zusammen,

ich habe ein Skript geschrieben, welches unter Windows funktioniert. Unter Linux (Ubuntu 18.04) will mir das einfach nicht gelingen. Kann mir jemand sagen, wie ich die Pfadangaben bzw. Befehle schreiben muss, so dass es unter Linux funktioniert? Im Grunde genommen geht es darum, eine E-Mail mit Thunderbird bzw. eine erzeugte Exceldatei mit LibreOffice zu öffnen.

Code: Alles auswählen


VerzThunderbird = "C:\\Program Files (x86)\\Mozilla Thunderbird\\thunderbird.exe"

def MailThunderbird(Mailadresse,Betreff,Inhalt,Anhang):
    mail = "to='{}', subject='{}',body='{}', attachment='{}'".format(Mailadresse, Betreff, Inhalt, Anhang)
    subprocess.Popen([VerzThunderbird, "-compose", mail])

Code: Alles auswählen

dbname = "LNW.xlsx"
path = os.getcwd()
neuername = path + "\\Berichte\\" + dbname[:-5] + time.strftime("_%Y%m%d_%H%M%S.xlsx")
pathprog = "D:\Daten\Tool\LibreOfficePortable61\LibreOfficeCalcPortable.exe"
subprocess.Popen([pathprog, neuername])
Vielen Dank.

snowflake

Re: Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 13:34
von __blackjack__
@snowflake: Das funktioniert unter Linux aus dem gleichen Grund nicht, warum das bei mir unter Windows nicht funktioniert: Die Pfade sind halt absolut und auf *Dein* Windows festgelegt. Ich habe zum Beispiel unter Windows gar kein ``D:``-Laufwerk. Und unter Linux gibt es das Laufwerkskonzept so auch gar nicht. Zudem ist es natürlich keine gute Idee plattformspezifische Pfadtrenner zu verwenden wenn das auf mehreren Plattformen laufen soll und Zeichenkettenoperationen statt `os.path`-Funktionen (oder `pathlib`).

Re: Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 14:13
von snowflake
Hallo __Blackjack__,

ich habe die absoluten Pfade drin gelassen, damit man sieht, was ich unter Windows gemacht habe. Das dass nicht unter Linux funktioniert, ist mir klar.

Mir ist aber nicht klar, wie ich das mit den Pfaden und Programmen systemunabhängig machen kann. Mit os.path kann ich momentan nicht erkennen, wie es gehen soll.

Viele Grüße

snowflake

Re: Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 14:52
von __blackjack__
@snowflake: Das kannst Du nicht systemunabhängig machen. Also ausser den Pfad den Du da zusammensetzt, eben mit `os.path`-Funktionen.

Einzige Möglichkeit wäre bei den Programmen in Deinem Programm nicht mit Pfaden zu arbeiten, sondern nur mit den Programmnamen und als Anforderung zu stellen, dass die im Suchpfad des jeweiligen Systems für Programme zu finden sind. Alternativ oder zusätzlich kann man das für den Benutzer konfigurierbar machen. Als Konstanten im Quelltext, oder als Kommandozeilenargumente, oder als Konfigurationsdatei. Oder eine beliebige Kombination davon.

Re: Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 16:23
von snowflake
Hallo __blackjack__,

was ich aber machen könnte wäre herauszufinden, um welches Betriebssystem es sich handelt und dann mehrere Pfade bereithalten.

Code: Alles auswählen

import platform
platform.system()
Die absoluten Pfade zu den Programmen müsste ich dann, wie von Dir vorgeschlagen, für einzelne Benutzer konfigurierbar machen (z. B. parser). Wo finde ich denn in Ubuntu jene Dateien zum Starten von Thunderbird und LibreOffice?

Vielen Dank und sonnige Grüße.

snowflake

Re: Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 16:41
von __blackjack__
@snowflake: Unter Linux würde ich da gar keine Pfade ”suchen”. Ausführbare Programme erwartet man da eigentlich immer im Suchpfad für ausführbare Programme. Also man lässt dort letztlich das System den Pfad finden.

Re: Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 16:44
von snowflake
Hallo __blackjack__,

Dein Vorschlag klingt gut. Kannst Du mir auf die Sprünge helfen wie das geht?

VG snowflake

Re: Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 16:52
von __blackjack__
@snowflake: Wie was geht? Du rufst einfach die Programme auf, über den Namen des Programms (thunderbird, libreoffice), ohne irgendwelche Pfade.

Re: Pfade/Befehle unter Linux

Verfasst: Donnerstag 20. September 2018, 18:20
von snowflake
Hallo __blackjack__,

über die Namen hat es in Ubuntu wunderbar funktioniert. Ich muss halt dann eine Variante für Windows und eine für Linux machen. Das ist aber ok. Du hast mir damit sehr geholfen.

Vielen Dank für Deine Unterstützung und einen schönen Abend.

snowflake