2013-01-31 29 views
5

मैं उप-प्रोसेस का उपयोग करके विम को कॉल करने की कोशिश कर रहा हूं, और इसे एक तर्क पास करता हूं। उदाहरण के लिए:मैं अपने उद्धरण से बचने के लिए उपप्रोसेसर कैसे कह सकता हूं?

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

कमांड लाइन पर यह आदेश काम करता है:

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

और फिर मैं F5 मारा और यह मुझे नमस्ते कहता है।

उपप्रोसेसर कॉल काम नहीं करता है। जब मैं कार्य प्रबंधक में प्रक्रिया को देखो, मुझे लगता है कि मेरी स्ट्रिंग है:

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

बिल्कुल भी मेरी अपेक्षा है, और मैं यह क्या विम उम्मीद है, या तो नहीं लगता। यह दिखता है जैसे उपप्रोसेस किसी भी तरह से मेरे उद्धरण से बच रहा है, लेकिन मुझे नहीं पता क्यों।

क्या कोई तरीका है कि मैं इसे काम करने के लिए प्राप्त कर सकता हूं जैसा कि मुझे उम्मीद है?

उत्तर

5

उद्धरण आवश्यक नहीं हैं क्योंकि subprocess.call शैल का उपयोग किए बिना सीधे प्रक्रियाओं को पास करता है (जब तक आप shell=True सेट नहीं करते)।

तो, subprocess.call(['gvim.exe', "+map <F5> :echo 'Hello!'<cr>"]) पर्याप्त होगा।

+1

हां, समस्या बचने वाली नहीं है (यह केवल स्ट्रिंग को प्रदर्शित करने के लिए है), यह उद्धरण है। – kindall

+0

हू। मैंने सोचा * मैंने भी उस विधि की कोशिश की। मुझे नहीं लगता! –