2011-08-11 9 views
10

मुझे एक पायथन फ़ाइल का उपयोग करके एक एप्लिकेशन (बाइनरी फ़ाइल) चलाने और तर्क पास करने की आवश्यकता है। कुछ तर्क पाइथन फ़ाइल प्रसंस्करण के दौरान स्ट्रिंग का प्रतिनिधित्व करते हैं।पायथन में पैरामीटर के साथ एप्लिकेशन कैसे चलाएं?

for i in range (len (files)) : 
    subprocess.call(["test.exe", files[i]]) //How to pass the argument files[i] 

धन्यवाद ...

अपडेट किया गया प्रश्न:


शायद मैं अजगर में तर्क गुजर समझ में नहीं आता 3. मानकों के बिना एक कोड ठीक

args = ['test. exe'] 
subprocess.call(args) 
चलाता है

हालांकि पैरामीटर के साथ कोड एक त्रुटि का कारण बनता है:

args = ['test. exe'] 
subprocess.call(args, '-f') //Error 

त्रुटि:

Error File "C:\Python32\lib\subprocess.py", line 467, in call 
return Popen(*popenargs, **kwargs).wait() 
File "C:\Python32\lib\subprocess.py", line 652, in __init__ 
raise TypeError("bufsize must be an integer") 
TypeError: bufsize must be an integer 

उत्तर

2

तुम सब करने की ज़रूरत तर्क सूची में शामिल है, बजाय एक अलग तर्क के रूप में की:

subprocess.call(["test.exe", files[i]]) 
3

अपने अपडेट किए गए प्रश्न के संबंध में : आपके उपप्रोसेसर के लिए तर्क कॉल() के लिए अलग-अलग पैरामीटर के रूप में पारित नहीं किए जाते हैं; बल्कि, वे तार की एक सूची के रूप में पारित कर रहे हैं, तो जैसे:

args = ["test.exe", "first_argument", "second_argument"] 

मूल प्रतिक्रिया: कोड के रूप में आप इसे फाइलों में प्रत्येक तत्व के लिए एक अलग प्रक्रिया पैदा करेगा है। यदि आप यही चाहते हैं, तो आपका कोड काम करना चाहिए।

args = ["test.exe"] + files 
subprocess.call(args) 
15
args = ['test. exe'] 
subprocess.call(args, '-f') //Error 

होना चाहिए: आप एक साथ ही फ़ाइलों के सभी के साथ कार्यक्रम कॉल करना चाहते हैं, तो आप अपनी सूची में जोड़ चाहता हूँ

args = ['test.exe', '-f'] 
subprocess.call(args) 

कमांड लाइन तर्क सब होना चाहिए subprocess.call के पहले पैरामीटर के लिए एक सूची के अंदर। कॉल करने का दूसरा तर्क bufsize है, जिसे एक पूर्णांक माना जाता है (इसलिए आपको त्रुटि क्यों मिलती है)

संबंधित मुद्दे