2013-01-31 16 views
5

Próbuję wywołać Vima za pomocą podprocesu i przekazać mu argument. Na przykład:Jak mogę powiedzieć podprocesowi, aby przestał uciekać od moich ofert?

subprocess.call(['gvim.exe', ''' "+map <F5> :echo 'Hello!'<cr>" ''']) 

Działa to polecenie w wierszu poleceń:

> gvim.exe "+map <F5> :echo 'Hello!'<cr>" 

A potem uderzył F5 i mówi mi cześć.

Wywołanie podprocesu nie działa. Kiedy patrzę na proces w Menedżerze zadań, widzę, że mój łańcuch jest teraz:

"\" +map <F5> :echo 'Hello!'<cr>\"" 

Wcale czego się spodziewałem, i nie sądzę, że to co Vim spodziewa się, albo. To wygląda podobnie jak podprocesowanie w jakiś sposób wymyka się moim cytatom, ale nie wiem dlaczego.

Czy jest jakiś sposób, żeby to zadziałało, jak się spodziewam?

Odpowiedz

5

Cytaty nie są konieczne, ponieważ subprocess.call przekazuje argumenty bezpośrednio do procesu bez użycia powłoki (chyba że ustawiono shell=True).

Wystarczy, subprocess.call(['gvim.exe', "+map <F5> :echo 'Hello!'<cr>"]) wystarczy.

+1

Tak, problem nie polega na ucieczce (to tylko w przypadku wyświetlania łańcucha), to cytaty. – kindall

+0

Huh. Ja * myślałem * Próbowałem też tej metody. Nie sądzę! –

Powiązane problemy