Wie wir alle wissen, übergibt man ``subprocess`` die Argumente für den aufzurufenden Prozess als Elemente einer Liste. Aus ``'ls -l blupp'`` wird ``['ls', '-l', 'blupp']``. So weit, so gut. Aber wie sieht es hiermit aus:
Code: Alles auswählen
In [164]: subprocess.call(['/usr/bin/touch', '"ein', 'test"'])
Wenn ich streng an den Leerzeichen trenne, muss ich das so machen. Das Ergebnis ist aber eigentlich nicht, was ich wollte:
Code: Alles auswählen
In [165]: subprocess.call(['/bin/ls', '-l', '"ein', 'test"'])
-rw-r--r-- 1 sebastian sebastian 0 2. Mär 22:58 "ein
-rw-r--r-- 1 sebastian sebastian 0 2. Mär 22:58 test"
Es bleibt einem also bei solchen Quotings nichts anderes übrig als (in dem Fall) den kompletten Dateinamen als ein Argument zu übergeben, sehe ich das richtig? Und macht das die Sache irgendwie unsicherer?