मैं एक मामले अजगर में निम्नलिखित शेल कमांड निष्पादित और उत्पादन प्राप्त करना चाहते हैं के लिए है,पायथन - पाइप के साथ खोल कमांड कैसे निष्पादित करें?
echo This_is_a_testing | grep -c test
मैं अजगर में ऊपर शेल कमांड निष्पादित करने के लिए, इस अजगर कोड का इस्तेमाल कर सकते
>>> import subprocess
>>> subprocess.check_output("echo This_is_a_testing | grep -c test", shell=True)
'1\n'
लेकिन, जैसा कि मैं "खोल = सच" विकल्प का उपयोग नहीं करना चाहते हैं, मैं निम्नलिखित अजगर कोड,
>>> import subprocess
>>> p1 = subprocess.Popen(["echo", "This_is_a_testing"], stdout=subprocess.PIPE)
>>> p2 = subprocess.Popen(["grep", "-c", "test"], stdin=p1.stdout)
>>> p1.stdout.close()
>>> p2.communicate()
(None, None)
की कोशिश की मुझे आश्चर्य है कि क्यों आउटपुट के रूप में "कोई नहीं" है मैंने वेबपृष्ठ में विवरणों का उल्लेख किया है: http://docs.python.org/library/subprocess.html#subprocess.PIPE
क्या मुझे अपने कोड में कुछ बिंदु याद आए? कोई सुझाव/विचार? अग्रिम में धन्यवाद।
जवाब – avasal
संबंधित अद्यतन: [मैं subprocess.Popen का उपयोग कैसे करूँ पाइप द्वारा कई प्रक्रियाओं कनेक्ट करने के लिए?] (http://stackoverflow.com/q/295459/4279) – jfs