【问题标题】:Print staments are lost when execute a python file from subprocess.call method从 subprocess.call 方法执行 python 文件时打印语句丢失
【发布时间】:2020-09-29 13:39:00
【问题描述】:

我正在运行一个 Python 代码,我正在执行一个命令以使用 subprocess.call() 方法运行另一个 Python 文件。 我在 subprocess.call() 中执行的文件中有一些打印语句,但是当我运行此代码时,这些语句不会打印在控制台上。
有没有办法让它们打印在控制台上?当我独立执行此文件而不是通过 subprocess.call() 执行此文件时,一切正常。 如果我将此命令的输出重定向到一个文件,那么它会打印在文件中,但找不到在运行时在控制台上查看它的方法。 任何帮助将不胜感激

【问题讨论】:

  • 仔细检查您是否确实需要使用 subprocess 来运行 python 程序并且不能只导入它。这样做的原因有很多,而且很可能会解决您的问题
  • edit 包含您当前的代码。

标签: python subprocess


【解决方案1】:

子进程调用有默认参数:stdout=None, stderr=None,您需要配置或使用capture_output=True,请参阅以下文档:https://docs.python.org/3/library/subprocess.html

【讨论】:

    【解决方案2】:

    您可能想使用subprocess.PIPE

    p = subprocess.call(..., stdout=subprocess.PIPE)
    output, _ = p.communicate()
    print(output)
    

    (写在浏览器中,但应该可以)

    顺便说一句,当您不提供任何代码(您既不使用子进程运行也不使用它)时,很难理解您的问题并提出解决方案。请添加它以获得更具体和/或相关的答案

    【讨论】:

    • @Ashgonline,这有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2017-12-17
    相关资源
    最近更新 更多