2012-08-07 16 views
9

Próbuję utworzyć program, który skanuje plik tekstowy i przekazuje argumenty do podprocesu. Wszystko działa dobrze, dopóki nie otrzymam katalogów ze spacjami na ścieżce.Obsługa katalogów ze spacjami Python subprocess.call()

Moja Podział metoda, która rozkłada argumenty wycieczki ponad przestrzeniach:

s = "svn move folder/hello\ world anotherfolder/hello\ world" 

task = s.split(" ") 
process = subprocess.check_call(task, shell = False) 

Do, albo funkcję muszę analizować odpowiednie argumenty, albo przekazać cały ciąg do podproces bez rozbijania go najpierw w dół.

Jestem trochę zagubiony.

+0

można polegać na stałej liczbie przestrzeni oddzielonych lewej tokeny? –

+1

Co powiesz na cytowanie nazw plików? –

+1

jeśli utworzysz nazwę pliku, który jest czytany, dlaczego nie ma rozdzielonych przecinków wartości? a następnie podzielić na "," zamiast wszystkich kłopotów? –

Odpowiedz

12

Użyj listę zamiast:

task = ["svn", "move", "folder/hello world anotherfolder/hello world"] 
subprocess.check_call(task) 

Jeśli plik zawiera całe polecenia, nie tylko ścieżki następnie można spróbować shlex.split():

task = shlex.split(s) 
subprocess.check_call(task) 
+3

+1 dla [shlex] (http://docs.python.org/library/shlex). – RanRag

+0

dziękuję, dziękuję! używanie listy rozwiązuje wszystkie rodzaje dziwnych cytowań/unikania problemów +1 – Brian

Powiązane problemy