应用程序在运行时未通过 python 中的 popen 提示确认消息
Application is not prompting confirmation message during runtime via popen in python
我有一个应用程序,我必须在 python.During 运行 时间内通过 POpen 加载,应用程序将提示一条确认消息,说明 "Can I continue?"。在这里,我们必须提供 yes/no选项。
POpen 正确执行命令,但应用程序不提示 "Can I continue" message.It 就停在那里 point.If 我 运行 手动应用程序,应用程序提示用于确认消息。
proc=subprocess.Popen(['app.exe -start'],shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
如果我遗漏了一些参数,请告诉我。
如果传递 stdout=subprocess.PIPE
选项,输出将重定向到 PIPE 而不会显示。您可以比较这两个函数:
p1 = subprocess.Popen(["ls"])
p2 = subprocess.Popen(["ls"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
第一个打印命令的输出,第二个不打印。但是您可以使用 p2.stdout.read()
.
访问它
因此,如果您想查看脚本的输出(并手动输入确认信息),请使用
proc = subprocess.Popen(['app.exe -start'], shell=True)
否则,您必须与 proc.stdin
和 proc.stdout
互动
PS :不鼓励使用 shell=True
,如果可以,请将其删除。如果您要 运行 的命令包含一些用户输入,这一点尤为重要。
我有一个应用程序,我必须在 python.During 运行 时间内通过 POpen 加载,应用程序将提示一条确认消息,说明 "Can I continue?"。在这里,我们必须提供 yes/no选项。
POpen 正确执行命令,但应用程序不提示 "Can I continue" message.It 就停在那里 point.If 我 运行 手动应用程序,应用程序提示用于确认消息。
proc=subprocess.Popen(['app.exe -start'],shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
如果我遗漏了一些参数,请告诉我。
如果传递 stdout=subprocess.PIPE
选项,输出将重定向到 PIPE 而不会显示。您可以比较这两个函数:
p1 = subprocess.Popen(["ls"])
p2 = subprocess.Popen(["ls"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
第一个打印命令的输出,第二个不打印。但是您可以使用 p2.stdout.read()
.
因此,如果您想查看脚本的输出(并手动输入确认信息),请使用
proc = subprocess.Popen(['app.exe -start'], shell=True)
否则,您必须与 proc.stdin
和 proc.stdout
PS :不鼓励使用 shell=True
,如果可以,请将其删除。如果您要 运行 的命令包含一些用户输入,这一点尤为重要。