小编典典

子脚本将Python输出输出到子流程中的控制台

python

在我的父脚本中,我执行以下操作:

fout=open(outfile,"w")
ferr = open(errfile,"w")

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

1.py脚本中,我希望大多数日志消息都进入日志文件,但是我希望根据打印条件在控制台上打印一些消息:

print "Hello World"

但是它正在打印到outfile,我也想在控制台上打印

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

但这aslso不起作用。任何帮助,将不胜感激!


阅读 240

收藏
2020-12-20

共1个答案

小编典典

如果将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!
2020-12-20