Subprocess und das Quoting: Wie macht man's richtig?
Verfasst: Montag 2. März 2009, 23:08
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:
Wenn ich streng an den Leerzeichen trenne, muss ich das so machen. Das Ergebnis ist aber eigentlich nicht, was ich wollte:
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?
Code: Alles auswählen
In [164]: subprocess.call(['/usr/bin/touch', '"ein', 'test"'])
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"