मैं पर्ल में कुछ खोल कमांड पाइप करने के बराबर एक पायथन का उपयोग करना चाहता था। खुले के पायथन संस्करण की तरह कुछ (पीआईपीई, "कमांड |")।पायथन का पॉपन क्लीनअप
मैं उपप्रक्रिया मॉड्यूल के लिए जाने के लिए और इस प्रयास करें:
p = subprocess.Popen("zgrep thingiwant largefile", shell=True, stdout=subprocess.PIPE)
यह आउटपुट उसी तरह मैं पर्ल में होगा पढ़ने के लिए काम करता है, लेकिन यह अपने आप साफ नहीं है। जब मैं दुभाषिया से बाहर निकलता हूं, तो मुझे
grep: writing output: Broken pipe
कुछ मिलियन बार stderr से अधिक spewed मिलता है। मुझे लगता है कि मैंने अच्छी तरह से आशा की थी कि यह सब मेरे लिए ख्याल रखा जाएगा, लेकिन यह सच नहीं है। पी को कॉल करना या पीना मारना मदद नहीं करता है। प्रक्रिया तालिका को देखो, मैं देखता हूं कि यह/bin/sh प्रक्रिया को मारता है, लेकिन टूटने वाली पाइप के बारे में शिकायत करने के लिए बच्चे को gzip छोड़ देता है।
ऐसा करने का सही तरीका क्या है?
क्या आप अपने उपप्रोसेसर 'पी' समाप्त होने से पहले दुभाषिया से बाहर निकल रहे हैं? – physicsmichael