【问题标题】:python - path printed inside outputpython - 在输出中打印的路径
【发布时间】:2014-12-28 22:36:14
【问题描述】:

我有一个 py 文件,里面有这个:

from subprocess import Popen

program = "path to program.exe"
file = "path to file used by program.exe"

p = Popen([program, file])
print p.stdout.read()

当我这样做时:

C:\>python file.py

在 cmd 我得到了

#output
#....
#... more output
C:\:>#...more output
#....
#...here finishes output

为什么会出现“C:\>”? 是不是因为 Popen 为了运行我给的命令……需要创建一个新进程?

提前致谢

PD: 使用 Windows Server 2008 蟒蛇2.7.5

【问题讨论】:

    标签: python windows subprocess popen


    【解决方案1】:

    python 脚本在启动该过程后结束,并且您的提示返回(打印C:\>)。但是子进程仍在运行,如果不重定向,它的stdout和stderr默认写入控制台,继续输出并覆盖返回的提示符。

    您可能想要做的是首先等待子进程结束

    subprocess.call([program, file])
    

    (如果您只是打印标准输出,则无需执行任何操作,因为这是默认设置。)

    如果您确实需要访问标准输出,请重定向标准输出并使用通信。

    p = subprocess.Popen([program, file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = p.communicate()
    print stdout
    

    【讨论】:

    • 感谢您的回答,如果我使用通信然后打印标准输出,在我的 python 脚本中使用它不会显示路径 (C:\>)。问题是我应该如何处理这个过程(我应该为此做另一个问题),如果我通过网络使用某些东西(localhost:9292/process)并将标准输出返回到浏览器,它只会在路径之前显示输出( C:\>)
    猜你喜欢
    • 2016-07-27
    • 2017-02-15
    • 2020-02-29
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多