पायथन 2.7+ के लिए मुहावरेदार उत्तर का उपयोग करना है subprocess.check_output()
आपको उपप्रकार को लागू करते समय तर्कों की हैंडलिंग पर भी ध्यान देना चाहिए, क्योंकि यह थोड़ा भ्रमित हो सकता है ...।
यदि आर्ग्स केवल एकल कमांड है जिसका कोई भी आर्गन्स नहीं है (या आपने shell=True
सेट किया है), तो यह एक स्ट्रिंग हो सकता है। अन्यथा यह एक सूची होनी चाहिए।
उदाहरण के लिए ... ls
आदेश को लागू करने के लिए , यह ठीक है:
from subprocess import check_call
check_call('ls')
ऐसा है:
from subprocess import check_call
check_call(['ls',])
हालाँकि, यदि आप शेल कमांड में कुछ आर्गन्स पास करना चाहते हैं, तो आप ऐसा नहीं कर सकते :
from subprocess import check_call
check_call('ls -al')
इसके बजाय, आपको इसे सूची के रूप में पास करना होगा:
from subprocess import check_call
check_call(['ls', '-al'])
shlex.split()
समारोह कभी कभी-जैसा शेल वाक्य रचना एक subprocesses बनाने ... इस तरह से पहले में एक स्ट्रिंग को विभाजित करने के लिए उपयोगी हो सकते हैं:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))
"ntpq -p"
, जो इसका एक अलग हिस्सा है इस समस्या से आप के बारे में पूछ रहे हैं।