मैं एक रैपर स्क्रिप्ट पर काम कर रहा हूं जो वर्चुअल मशीन स्टार्टअप/शटडाउन/रजिस्टर/पंजीकरण/कार्यवाही के स्वचालन के लिए अनुमति देने वाला एक वीएमवेयर निष्पादन योग्य व्यायाम करेगा। मैं निष्पादन योग्य आवेदक को संभालने के लिए उपप्रोसेस का उपयोग करने की कोशिश कर रहा हूं, लेकिन एक्जिक्यूटिव पथ में और निष्पादन योग्य के पैरामीटर में रिक्त स्थान को उपप्रोसेसर द्वारा सही तरीके से संभाला नहीं जा रहा है। नीचे एक कोड टुकड़ा है:एकाधिक तर्कों में रिक्त स्थान होने पर उपप्रोसेस का उपयोग कैसे करें?
vmrun_cmd = r"c:/Program Files/VMware/VMware Server/vmware-cmd.bat"
def vm_start(target_vm):
list_arg = "start"
list_arg2 = "hard"
if vm_list(target_vm):
p = Popen([vmrun_cmd, target_vm, list_arg, list_arg2], stdout=PIPE).communicate()[0]
print p
else:
vm_register(target_vm)
vm_start(target_vm)
def vm_list2(target_vm):
list_arg = "-l"
p = Popen([vmrun_cmd, list_arg], stdout=PIPE).communicate()[0]
for line in p.split('\n'):
print line
अगर मैं vm_list2 फ़ंक्शन को कॉल करें, मैं निम्नलिखित उत्पादन प्राप्त करें:
$ ./vmware_control.py --list
C:\Virtual Machines\QAW2K3Server\Windows Server 2003 Standard Edition.vmx
C:\Virtual Machines\ubunturouter\Ubuntu.vmx
C:\Virtual Machines\vacc\vacc.vmx
C:\Virtual Machines\EdgeAS-4.4.x\Other Linux 2.4.x kernel.vmx
C:\Virtual Machines\UbuntuServer1\Ubuntu.vmx
C:\Virtual Machines\Other Linux 2.4.x kernel\Other Linux 2.4.x kernel.vmx
C:\Virtual Machines\QAClient\Windows XP Professional.vmx
अगर मैं vm_start समारोह है, जो एक पथ-टू-VM पैरामीटर की आवश्यकता है कहते हैं, मैं निम्नलिखित उत्पादन प्राप्त करें:
$ ./vmware_control.py --start "C:\Virtual Machines\ubunturouter\Ubuntu.vmx"
'c:\Program' is not recognized as an internal or external command,
operable program or batch file.
जाहिर है, एम्बेडेड रिक्त स्थान के साथ एक दूसरे पैरामीटर की उपस्थिति तरीका है कि उपप्रक्रिया पहले पैरामीटर व्याख्या करने के तरीके में फेरबदल किया गया है। इसे हल करने के तरीके पर कोई सुझाव?
python2.5.2/cygwin/WinXP
सी में आपकी स्लैश क्यों हैं:/प्रोग्राम फ़ाइलें/वीएमवेयर/वीएमवेयर सर्वर/vmware-cmd। बल्ले गलत तरीके से जा रहा है? क्या यह सी नहीं है: \ प्रोग्राम फ़ाइलें \ ...? –
ठीक है, साइगविन * निक्स पोर्ट है, इसलिए यह मानक (या जो मानक मैं समझता हूं) की तरह लगता है * निक्स स्लैश नोटेशन मेरी समझ यह है कि उपप्रोसेसर को अलग-अलग सिस्टम की जरूरतों के लिए विभाजक का अनुवाद करना चाहिए। –
क्या यह अभी हल हो गया है? – Gohan