在我的父脚本中,我执行以下操作:
fout=open(outfile,"w") ferr = open(errfile,"w") subprocess.call("1.py",stdout=fout,stderr=ferr,shell=True)
在1.py脚本中,我希望大多数日志消息都进入日志文件,但是我希望根据打印条件在控制台上打印一些消息:
1.py
print "Hello World"
但是它正在打印到outfile,我也想在控制台上打印
sys.__stdout__.write("Hello World");
但这aslso不起作用。任何帮助,将不胜感激!
如果将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!