पर एक प्रक्रिया का आउटपुट प्राप्त करना मैं subprocess.Popen
का उपयोग कर प्रक्रिया चलाने के लिए एक पायथन स्क्रिप्ट का उपयोग कर रहा हूं और साथ ही आउटपुट को टेक्स्ट फ़ाइल में संग्रहीत करता हूं और साथ ही इसे कंसोल पर प्रिंट करता हूं।रनटाइम
result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in result.stdout.readlines(): #read and store result in log file
openfile.write("%s\n" %line)
print("%s" %line)
कोड से ऊपर ठीक काम करता है, लेकिन उसके द्वारा यह पहली प्रक्रिया पूर्ण और परिणाम चर में उत्पादन संग्रहीत करता है: यह मेरा कोड है। उसके बाद लूप आउटपुट को स्टोर करता है और प्रिंट करता है।
लेकिन मैं रनटाइम पर आउटपुट चाहता हूं (क्योंकि मेरी प्रक्रिया को पूरा होने में घंटे लग सकते हैं, मुझे इन सभी घंटों के लिए कोई आउटपुट नहीं मिलता है)।
तो क्या कोई अन्य कार्य है जो मुझे गतिशील रूप से आउटपुट (रनटाइम पर) देता है, इसका मतलब है कि जैसे ही प्रक्रिया पहली पंक्ति देती है, इसे मुद्रित किया जाना चाहिए।
मैं वास्तव में यह कभी नहीं की कोशिश की है, लेकिन मुझे लगता है कि आप अपने खुद के लिए भेजने के लिए अपेक्षा की जाती है पायथन 'फ़ाइल' ऑब्जेक्ट 'stdout' (या 'stdin', या' stderr') तर्क पर ऑब्जेक्ट। तब आपको उस फाइल को मतदान करना होगा। आपको उस दर्द को छोड़ने के लिए 'सबप्रोसेस' का आविष्कार किया गया था, लेकिन ऐसा लगता है कि आपके पास कोई विकल्प नहीं है। सौभाग्य। –
_ "यह पहली बार प्रक्रिया को पूरा करता है और आउटपुट को परिणाम में स्टोर करता है" _ - यह सच नहीं है। – Eric
"यह पहली बार प्रक्रिया को पूरा करता है और आउटपुट को परिणाम में संग्रहीत करता है" - यह सच नहीं है। खैर, जब मैं पॉपन कमांड चला रहा हूं, तब तक यह प्रक्रिया समाप्त होने तक चलती रहती है और फिर यह आगे कोडिंग निष्पादित करती है। अगर यह किसी अन्य तरीके से काम करता है, तो मैं उसे जानना चाहता हूं। – Niyojan