shell -kommando per subprocess ..

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
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

Hallo

Ich scheitere gerade daran einen Shell-befehl in einen subprocess...-aufruf umzuwandeln.
Folgendes in einer Shell tut was ich will:

Code: Alles auswählen

/opt/libreoffice4.1/program/soffice --calc --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager" 
Damit startet Libreoffice im Servermodus

Per Subprocess aus einer IPython-shell:

Code: Alles auswählen

In [1]: import subprocess

In [2]: subprocess.call(['/opt/libreoffice4.1/program/soffice', 
                                           '--calc',
                                            '''--accept="socket,host=localhost,port=2002;
                                              urp;StarOffice.ServiceManager"'''])
***ohne Umbrüche im letzen Argument!

started LO zwar, aber nicht im Servermodus, und print(..) -befehle aus LO-scripts kommen auch nicht in der Shell an.

In der "Light"-version ohne Servermodus tun es:

Code: Alles auswählen

/opt/libreoffice4.1/program/soffice --calc
versus

Code: Alles auswählen

In [1]:import subprocess

In [2]: subprocess.call(['/opt/libreoffice4.1/program/soffice',  '--calc'])
gleichermassen.
Vermutlich muss ich das letzte Argument für subprocess irgendwie aufsplitten..nur wie ?

Karolus
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo karolus,

Du mußt die doppelten Anführungsstriche weglassen. Die werden bereits von der Shell verarbeitet und gelangen nicht bis zum aufgerufenen Programm.

Grüße
Sirius
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

Hallo
Du mußt die doppelten Anführungsstriche weglassen. ...
Ja, das wars -- danke für den Schubs.

Karolus
Antworten