当前位置: 首页 > 面试题库 >

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

子车飞文
2023-03-14
问题内容

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

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不起作用。任何帮助,将不胜感激!


问题答案:

如果将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 如果使用,则会得到以下信息: 编辑2 我试过冲洗: 和这里: 但它再次挂起。 问题答案: 我相信这里有两个问题在起作用: 1)您的父脚本调用,它将读取所有数据,直到文件结束。但是,您的子脚本会无限循环运行,

  • 问题内容: 我了解到,在Python中执行命令时,应该使用子进程。我想要实现的是通过ffmpeg对文件进行编码,并观察程序输出,直到文件完成。Ffmpeg将进度记录到stderr。 如果我尝试这样的事情: 调用child.communicate()后,程序无法继续执行,并等待命令完成。还有其他方法可以跟踪输出吗? 问题答案: communication()阻塞直到子进程返回,所以循环中的其余各行仅

  • 问题内容: 我正在使用python脚本作为水动力代码的驱动程序。是时候运行模拟了,我用来运行代码,将和的输出收集到中,然后我可以打印(并保存到日志文件中)输出信息,并检查是否有错误。问题是,我不知道代码是如何进行的。如果我直接从命令行运行它,它将为我提供有关其迭代次数,时间,下一时间步长等的输出。 有没有办法既存储输出(用于日志记录和错误检查),又产生实时流输出? 我的代码的相关部分: 最初,我是

  • 使用Windows下的Eclipse Juno,我配置了一个外部工具,该工具调用程序,并将Python脚本文件作为参数运行(后者位于双引号之间,如)。 我还再次检查了外部工具配置窗口中的“Common”选项卡中是否设置了“Allocate Console”选项。

  • 我想将gradle脚本中的所有控制台输出记录到日志文件中: 但是我的gradle脚本提示用户参数: 因此,我有一个NullPointerException: 有人知道这种情况的解决方案或变通方法吗?

  • 问题内容: 我有使用Python编写的自定义命令行,该命令行使用“ print”语句打印其输出。我通过生成一个子进程并使用 child.stdin.write 方法向其发送命令来从Node.js使用它。来源: 现在的问题是我没有以流动模式接收输出。我希望在打印子进程后立即获得它的输出,但是仅当子进程终止时(使用自定义cli的 quit 命令),我才接收所有命令的输出。 问题答案: 您需要在子进程中