मैं subprocess.Popen
कॉल का उपयोग कर रहा हूं, और एक अन्य प्रश्न में मुझे पता चला कि मुझे गलतफहमी हुई है कि पाइथन कमांड लाइन के लिए तर्क कैसे उत्पन्न कर रहा था।subprocess द्वारा बुलाया कमांड लाइन आउटपुट?
मेरे प्रश्न
वहाँ पता लगाने के लिए क्या वास्तविक कमांड लाइन था कोई तरीका है?
उदाहरण कोड: -
proc = subprocess.popen(....)
print "the commandline is %s" % proc.getCommandLine()
कैसे आप getCommandLine
लिखना चाहते हैं?
मैं 2.6 में हूं। और 2.6 में कम से कम यह अच्छा है कि list2cmdline अनियंत्रित है, क्योंकि यह काम नहीं करता है: '--arg = foo bar' के लिए वास्तव में क्या होता है '--arg = "foo bar' 'लेकिन क्या list2cmdline देता है' ' --arg = foo bar "'... लेकिन धन्यवाद। –
मुझे लगता है कि समस्या 'list2cmdline' के साथ नहीं है, बल्कि' shlex.split' है। 'shlex.split ('- arg =" foo bar "') 'एक आइटम के साथ एक सूची देता है:' ['--arg = foo bar'] ', जबकि' shlex.split (' - arg = " foo bar "')' सही ढंग से तर्कों को विभाजित करता है: '[' --arg ',' = ',' foo bar ']'। इस बाद की सूची 'list2cmdline' ठीक काम करता है। – unutbu
वैसे, पायथन 2.6 का 'सबप्रोसेस' मॉड्यूल 'args' को किसी सूची में कनवर्ट करने के लिए' list2cmdline' का उपयोग करता है जब भी 'args' स्ट्रिंग नहीं है, इसलिए यह इस अर्थ में काम कर रहा है कि आप ' list2cmdline (args) 'वास्तव में 'execvp *' या Windows समकक्ष पर क्या हो रहा है। – unutbu