subprocess - Mehrere Parameter, bekomme es nicht hin

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
neovanmatix
User
Beiträge: 19
Registriert: Samstag 28. Dezember 2013, 20:52

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? :/
BlackJack

@neovanmatix: Du übergibst das einfach als *ein* Argument (ungetestet):

Code: Alles auswählen

call(['sudo', 'sh', '-c', 'echo 252 > /sys/class/gpio/export'])
neovanmatix
User
Beiträge: 19
Registriert: Samstag 28. Dezember 2013, 20:52

Hi,
danke, funktioniert prima! :)
Antworten