दिलचस्प पोस्ट
टेक्स्टफील्ड पर टैप करने पर तिथिपिक्क प्रदर्शित करें मैं एक्लिप्स आउटपुट कंसोल की क्षमता कैसे बढ़ाऊं? NumPy: हटाए गए एनएएन के साथ औसत गणना उपयोगकर्ता को पृष्ठ पसंद है या नहीं, यह देखने के लिए निर्बाध तरीके कैसे गतिशील रूप से एक स्ट्रिंग के लिए स्मृति स्थान आवंटित करें और उस स्ट्रिंग को उपयोगकर्ता से मिलता है? आईबी में एक बाधा से आउटलेट कनेक्शन बनाने में असमर्थ एसवीजी उपयोग तत्व और: मंडराना शैली javascript / jquery में base64 को छवि में कनवर्ट करें पायथन में 0 से शुरू होने वाली संख्या क्या होती है? परीक्षण कोड जिसमें फ्लास्क एप या अनुरोध संदर्भ की आवश्यकता होती है 60 मिलियन प्रविष्टियां, एक निश्चित महीने से प्रविष्टियां चुनें। डेटाबेस को कैसे अनुकूलित करें? फंक्शन टेम्पलेट में जादू तर्क पूर्वता के साथ समीकरण (अभिव्यक्ति) पार्सर? jQuery .hasClass () बनाम .is () HTML इनपुट = "फ़ाइल" विशेषता फ़ाइल प्रकार स्वीकार करें (CSV)

बच्चे के झुंड से सब-प्रोसेस में कंसोल में पायथन आउटपुट

मेरी पैरेंट स्क्रिप्ट में, मैं निम्नलिखित करता हूं:

fout=open(outfile,"w") ferr = open(errfile,"w") subprocess.call("1.py",stdout=fout,stderr=ferr,shell=True) 

1.py , स्क्रिप्ट में, मैं लॉग संदेश में जाने के लिए अधिकांश लॉग संदेश चाहता हूं, लेकिन कुछ संदेश, मैं कंसोल पर मुद्रित करना चाहता हूं, प्रिंट शर्तों के आधार पर:

 print "Hello World" 

लेकिन यह आउटफ़ाइल के लिए छपाई कर रहा है, जिसे मैं कंसोल पर प्रिंट करना चाहता था, मैंने कोशिश की थी

 sys.__stdout__.write("Hello World"); 

लेकिन वह भी काम नहीं कर रहा है किसी भी सहायता की सराहना की जाएगी!

वेब के समाधान से एकत्रित समाधान "बच्चे के झुंड से सब-प्रोसेस में कंसोल में पायथन आउटपुट"

अगर stdout, stderr रीडायरेक्ट किया जाता है, तो आप सीधे कंसोल पर प्रिंट करने का प्रयास कर सकते हैं:

 try: # Windows from msvcrt import putwch def print_to_console(message): for c in message: putwch(c) # newline putwch('\r') putwch('\n') except ImportError: # Unix import os fd = os.open('/dev/tty', os.O_WRONLY | os.O_NOCTTY) tty = os.fdopen(fd, 'w', 1) del fd def print_to_console(message, *, _file=tty): print(message, file=_file) del tty 

उदाहरण:

 print_to_console("Hello TTY!") # -> Hello TTY! 

यदि आप 1.py , तो आप अपने खुद के उदाहरणों में stdout और stderr हो सकते हैं, आप वैकल्पिक रूप से, 1.py में stdout / stdin को अनुप्रेषित नहीं कर 1.py , और इसके बजाय पैरामीटर के रूप में fout/ferr कुछ इस तरह:

 # assuming python 2.7.x from __future__ import print_function import argparse import sys if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('--stdout' , nargs='?' , type=argparse.FileType('a') , default=sys.stdout) parser.add_argument( '--stderr' , nargs='?' , type=argparse.FileType('a') , default=sys.stderr) namespace = parser.parse_args() print("Hello There", file=namespace.stdout) print("Error time", file=namespace.stderr) print("Always to stdout") print("Always to stderr", file=sys.stderr) 

और फिर इसे इस तरह चलाएं:

 python 1.py --stdout=outfile.log stderr=errfile.log 

subprocess से कॉल करने के लिए:

 subprocess.call("1.py",shell=True) # no need to redirect stdout and stderr now