रीडायरेक्ट करने के दो तरीके हैं। दोनों subprocess.Popen
या तो लागू होते हैं subprocess.call
।
कीवर्ड तर्क सेट करें shell = True
या executable = /path/to/the/shell
जैसा आपके पास है, वैसे ही कमांड निर्दिष्ट करें।
चूंकि आप आउटपुट को किसी फ़ाइल पर पुनर्निर्देशित कर रहे हैं, कीवर्ड तर्क सेट करें
stdout = an_open_writeable_file_object
जहाँ ऑब्जेक्ट output
फ़ाइल को इंगित करता है।
subprocess.Popen
से अधिक सामान्य है subprocess.call
।
Popen
ब्लॉक नहीं करता है, जिससे आप इसे चलाते समय प्रक्रिया के साथ बातचीत कर सकते हैं, या अपने पायथन कार्यक्रम में अन्य चीजों के साथ जारी रख सकते हैं। Popen
किसी Popen
वस्तु को वापस करने का आह्वान ।
call
ब्लॉक करता है। हालांकि यह Popen
कंस्ट्रक्टर के रूप में सभी समान तर्कों का समर्थन करता है , इसलिए आप अभी भी प्रक्रिया 'आउटपुट, पर्यावरण चर, आदि को सेट कर सकते हैं, आपकी स्क्रिप्ट प्रोग्राम के पूरा होने का इंतजार करती है, और call
प्रक्रिया के एक्जिट स्टेटस का प्रतिनिधित्व करने वाला कोड लौटाती है।
returncode = call(*args, **kwargs)
मूल रूप से कॉलिंग के समान है
returncode = Popen(*args, **kwargs).wait()
call
बस एक सुविधा समारोह है। यह CPython में कार्यान्वयन में है subprocess.py :
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
जैसा कि आप देख सकते हैं, यह एक पतला आवरण है Popen
।
call()
बहुत स्पष्ट प्रतीत होती है। क्या आप एक उद्धरण या एक लिंक प्रदान कर सकते हैं ताकि हम जान सकें कि किसी उत्तर में क्या ध्यान दें?