Seite 1 von 1

subprocess - Mehrere Parameter, bekomme es nicht hin

Verfasst: Sonntag 12. Januar 2014, 15:05
von neovanmatix
Hallo,

ich kann die Hintergrundbeleuchtung eines Displays, das mit einem Raspberry verbunden ist, per GPIO an- und ausschalten:

Code: Alles auswählen

sudo sh -c "echo 252 > /sys/class/gpio/export"
sudo sh -c "echo 'out' > /sys/class/gpio/gpio252/direction" # GPIO als Ausgang setzen
sudo sh -c "echo '1' > /sys/class/gpio/gpio252/value" # Display anschalten
sudo sh -c "echo '0' > /sys/class/gpio/gpio252/value" # Display ausschalten
Bisher löse ich das per os.system():

Code: Alles auswählen

os.system('sudo sh -c "echo \'1\' > /sys/class/gpio/gpio252/value"') # Display einschalten
Nun möchte ich das per subprocess.Popen() umsetzen, habe jedoch Probleme mit den mehrfachen Parametern.
Bei subprocess gebe ich die Parameter als Tupel an:
subprocess.Popen(['sudo','sh', '-c', ...])

Bei getrennten Parametern wie sudo, sh, -c, etc. funktioniert das auch - ich habe nun ein Problem den Parameter '"echo '1' > /sys/class/gpio/gpio252/value"' anzugeben, da das anscheinend als "ganzer String" übergeben werden muss.
Wenn ich es aufsplitte in 'echo','"1"','>','/sys/class/gpio/gpio252/value' erhalte ich Fehler.

Wie löse ich das am besten? :/

Re: subprocess - Mehrere Parameter, bekomme es nicht hin

Verfasst: Sonntag 12. Januar 2014, 15:11
von BlackJack
@neovanmatix: Du übergibst das einfach als *ein* Argument (ungetestet):

Code: Alles auswählen

call(['sudo', 'sh', '-c', 'echo 252 > /sys/class/gpio/export'])

Re: subprocess - Mehrere Parameter, bekomme es nicht hin

Verfasst: Sonntag 12. Januar 2014, 15:29
von neovanmatix
Hi,
danke, funktioniert prima! :)