2015-10-11 7 views
7

मैं पाइथन लिपि से टर्मिनल में एक कमांड निष्पादित करना चाहता हूं।पाइथन लिपि से टर्मिनल में कमांड कैसे निष्पादित करें?

./driver.exe bondville.dat 

यह आदेश टर्मिनल में मुद्रित हो रहा है, लेकिन यह निष्पादित करने में विफल रहा है।

यहाँ मेरी कदम हैं:

echo = "echo" 
command="./driver.exe"+" "+"bondville.dat" 
os.system(echo + " " + command) 

यह आदेश पर अमल करना चाहिए, लेकिन यह सिर्फ टर्मिनल पर यह मुद्रण है। मैन्युअल रूप से एक ही चीज़ को खिलाते समय यह निष्पादित हो रहा है। मैं इसे एक स्क्रिप्ट से कैसे करूं?

+2

उपप्रक्रिया मॉड्यूल –

+0

@PadraicCunningham मैं अजगर को नया हूँ उपयोग करें, और इस उपप्रक्रिया मॉड्यूल बहुत मुश्किल मुझे संभाल करने के लिए लगता है। इसका उपयोग कैसे करें? – Mario

+0

क्या आप आउटपुट स्टोर करना चाहते हैं या बस कमांड को चलाएं? –

उत्तर

9

echo टर्मिनल कमांड अपने तर्कों को ईकोज़ करता है, इसलिए टर्मिनल को कमांड प्रिंट करना अपेक्षित परिणाम है।

क्या आप echo driver.exe bondville.dat टाइप कर रहे हैं और क्या यह आपके driver.exe प्रोग्राम चला रहा है?
यदि नहीं, तो आप अपने कोड की अंतिम पंक्ति में गूंज से छुटकारा पाने की जरूरत है:

os.system(command) 
+0

धन्यवाद काम किया !! – Mario

2

आप कमांड को चलाने के लिए subprocess.check_call मॉड्यूल का उपयोग कर सकते हैं, तो आप को चलाने के लिए गूंज की जरूरत नहीं है आदेश:

from subprocess import check_call 

check_call(["./driver.exe", "bondville.dat"]) 

कौन सा बैश से ./driver.exe bondville.dat चल के बराबर है।

आप उत्पादन आप check_outout का प्रयोग करेंगे प्राप्त करना चाहता था, तो:

from subprocess import check_output 

out = check_output(["./driver.exe", "bondville.dat"]) 

अपने खुद के कोड में आप मूल रूप से स्ट्रिंग गूंज रहे हैं command वास्तव में आदेश चलाकर नहीं यानी echo "./driver.exe bondville.dat" जायें जो कि अपने खोल में उत्पादन ./driver.exe bondville.dat

2

इस प्रयास करें:

import subprocess 
subprocess.call("./driver.exe bondville.dat") 
+1

"इसे आज़माएं" उत्तर अनुपयोगी हैं क्योंकि वे यह नहीं बताते कि समस्या क्या थी या अगली बार इसे कैसे ठीक किया जाए। –

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