Seite 1 von 1

Aufruf externes Programm

Verfasst: Montag 25. Oktober 2021, 19:42
von Codo
Hallo,

ich bin Neuling in dieser Programmiersprache. Für ein Linux-System möchte ich ein Pythoncode erstellen. Dabei möchte ich ein externes Programm aufrufen. Ich habe dazu einen komplexen Aufruf, den ich in Python ausführen möchte. Das Kommando habe ich unter Ubuntu getestet und bringt das gewünschte Ergebnis.

Kommando: wget -nv 'http://download.osmand.net/rawindexes/' -O - | grep -oE 'file=Austria_burgenland_europe_2.obf.zip' | cut -c6- | xargs -I{} wget 'http://download.osmand.net/download.php ... =yes&file={}' -O {}

Dieses habe ich versucht wie folgt umzusetzen:

Code: Alles auswählen

#! /usr/bin/env python
import os

test="wget -nv 'http://download.osmand.net/rawindexes/' -O - | grep -oE 'file=Austria_burgenland_europe_2.obf.zip' | cut -c6- | xargs -I{} wget 'http://download.osmand.net/download.php?standard=yes&file={}' -O {}"
os.system(test)
Beim Ausführen wird kein Fehler gemeldet. Das Ergebnis wird aber auch nicht erreicht. Ebenfalls scheiterten auch Versuche mit subprocess.call, subprocess.run usw.

Wer kann mir weiterhelfen? Für Spezies sicher eine Kleinigkeit.

Gruß Codo

Re: Aufruf externes Programm

Verfasst: Montag 25. Oktober 2021, 20:11
von Sirius3
Wenn Du solch ein Kommand ausführen möchtest, dann ist ein Shell-Skript das richtige und nicht ein Python-Programm.

Willst Du das mit Python lösen, wird aus dem wget ein Aufruf von requests.get, das grep wird durch einen richtigen HTML-Parser ersetzt und der xargs-Aufruf ist eine einfache Schleife.

Re: Aufruf externes Programm

Verfasst: Montag 25. Oktober 2021, 21:01
von __blackjack__
Nicht mal eine Schleife weil es da nur eine Datei gibt, auf die das zutrifft. Und die URL die da zusammengebaut wird, steht auch schon so im Quelltext der Webseite.

Re: Aufruf externes Programm

Verfasst: Mittwoch 9. November 2022, 08:13
von Codo
Hallo,

danke für das Mitdenken. Auf einem Synology-NAS kann ich keine Shell-Skripte ausführen. Zumindest ist mir das noch nicht gelungen.

Dank Google habe ich jetzt doch eine Lösung gefunden mit requests.

MfG