2008-11-09 27 views
7

मैं Python documentation पर देख रहा था और देखा कि पॉपन() के 4-5 अलग-अलग संस्करण हैं, उदाहरण के लिए os.popen(), os.popen2(), आदिos.popen() विधियों के बीच क्या अंतर है?

इस तथ्य के अलावा कि stderr जबकि अन्य नहीं हैं, उनके बीच अंतर क्या हैं और आप प्रत्येक का उपयोग कब करेंगे? दस्तावेज वास्तव में इसे बहुत अच्छी तरह से समझा नहीं था।

उत्तर

9

popen2 मानक त्रुटि को कैप्चर नहीं करता है, popen3 मानक त्रुटि को कैप्चर करता है और इसके लिए एक अद्वितीय फ़ाइल हैंडल देता है। अंत में, popen4 मानक त्रुटि को कैप्चर करता है लेकिन इसे मानक आउटपुट के रूप में उसी फ़ाइल ऑब्जेक्ट में शामिल करता है।

14

मैं subprocess मॉड्यूल का उपयोग करने की अनुशंसा करता हूं जिसमें इन कार्यों के सभी सुविधाएं हैं और अधिक।

+0

टिप्पणी किया जाना चाहिए – Yarin

13

जेसन सही है। एक तरह से देखना आसान हो जाए कि में संक्षेप में प्रस्तुत करने के लिए:

  • os.popen() -> stdout
  • os.popen2() -> (stdin, stdout)
  • os.popen3() -> (stdin, stdout, stderr)
  • os.popen4() -> (stdin, stdout_and_stderr)
संबंधित मुद्दे