2012-08-07 5 views
9

Sto provando a creare un programma che analizza un file di testo e passa gli argomenti al sottoprocesso. Tutto funziona bene finché non ottengo le directory con gli spazi nel percorso.Gestione di directory con spazi Python subprocess.call()

mio metodo split, che scompone gli argomenti viaggi nel corso degli spazi:

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

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

Do, né ho bisogno di funzione per analizzare gli argomenti corretti, o passare l'intera stringa al sottoprocesso senza romperlo giù prima

Sono un po 'perso però.

+0

Potete contare su un numero fisso di spazio delimitato da sinistra gettoni? –

+1

come citare i nomi dei file? –

+1

se si crea il nome file che si sta leggendo, perché non hanno i valori separati da virgola? e poi dividere su "," invece di tutte le seccature? –

risposta

12

utilizzare un elenco invece:

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

Se il file contiene comandi complesso, non solo i percorsi allora si potrebbe provare shlex.split():

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

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

+0

grazie grazie! l'uso di una lista risolve tutti i tipi di strane citazioni/problemi di escape +1 – Brian