2011-12-20 4 views
5

मैं पाइथन स्क्रिप्ट निष्पादित करने के लिए बैश में निम्न आदेश का उपयोग करता हूं।एकाधिक उद्धरण वाले तर्कों के साथ पायथन उपप्रोसेस कॉल

python myfile.py -c "'USA'" -g "'CA'" -0 "'2011-10-13'" -1 "'2011-10-27'" 

मैं इस के चारों ओर लपेटने के लिए एक पायथन लिपि लिख रहा हूं। मुझे वर्तमान में ओएससिस्टम का उपयोग करना है (मुझे पता है, यह क्रोधित है) क्योंकि मैं यह नहीं समझ सकता कि उद्धरणों को उपप्रोसेस के साथ काम करने के लिए कैसे प्राप्त किया जाए। पोपेन। अंदरूनी सिंगल कोट्स को स्ट्रिंग वैरिएबल में बनाए रखा जाना चाहिए जो

क्या कोई मुझे यह निर्धारित करने में मदद कर सकता है कि उपप्रोसेसर को पारित किए गए पहले चर को कैसे प्रारूपित किया जाए। पोपेन।

उत्तर

4

तुम भी उद्धृत मानकों के साथ subprocess.Popen साथ अपनी स्क्रिप्ट शुरू करने के लिए सक्षम होना चाहिए:

subprocess.Popen([ 
    "/usr/bin/python", 
    "myfile.py", 
    "-c", 
    "'USA'", 
    "-g", 
    "'CA'", 
    "-0", 
    "'2011-10-13'", 
    "-1", 
    "'2011-10-27'", 
]) 
0

आप इस की कोशिश की?

import subprocess 
subprocess.Popen(['python', 'myfile.py', '-c', "'USA'", '-g', "'CA'", '-0', "'2011-10-13'", -1, "'2011-10-27'"]).communicate() 

आपको यह देखना होगा कि क्या आप bash से मिलता है कि तुम क्या subprocess.Popen से प्राप्त करने के समान है (मेरे मामले में यह मेल खाता है) myfile.py में इस इस्तेमाल कर सकते हैं:

import sys 
print sys.argv 
8

आप की जरूरत नहीं है मूल्यों से बचने के लिए। प्रक्रिया के लिए सब कुछ एक स्ट्रिंग के रूप में पारित किया जाता है।

import shlex 
shlex.split('python myfile.py -c "USA" -g "CA" -0 "2011-10-13" -1 "2011-10-27"') 
['python', 
'myfile.py', 
'-c', 
'USA', 
'-g', 
'CA', 
'-0', 
'2011-10-13', 
'-1', 
'2011-10-27'] 
+0

यह पसंदीदा OneWayToDoIt (टीएम) है:

आप यह पता लगाने का सबसे अच्छा तरीका चर पारित करने के लिए है कि क्या shlex मॉड्यूल का उपयोग कर सकते हैं। –

+0

ध्यान दें कि यह विंडोज वातावरण के लिए काम नहीं करता है क्योंकि श्लेक्स यूनिक्स शैल के लिए है। –