【问题标题】:Automatically answer to input prompt of batch script run by Python自动响应 Python 运行的批处理脚本的输入提示
【发布时间】:2018-08-01 12:04:48
【问题描述】:

这是一个相当不寻常的用例,我必须让遗留系统工作。

我有如下名为“batch_test.bat”的 Windows 批处理脚本(仅作为示例):

@echo OFF
set /P choice=Enter your choice: 

if /I "%choice%" == "N" (
    echo "Don't proceed"
)

if /I "%choice%" == "Y" (
    echo "Proceed"
)
if /I "%choice%" == "C" (
    echo "Cancel"

)
EXIT /B 0

我有以下 python 代码(示例):

import os

os.system('batch_test.bat')

问题是如何提供 Python 期望的选择批处理脚本?我查了一下,但找不到合适的答案。

谢谢。

【问题讨论】:

  • 如果您阅读os.system 的文档:“subprocess 模块提供了更强大的功能……使用该模块比使用此功能更可取……”如果您想控制程序的标准输入,或捕获其标准输出,或在不使用 shell 或其他任何东西的情况下安全运行它,使用 subprocess,而不是 os.system
  • 请注意,从该段链接到的文档Replacing Older Functions with the subprocess Module 包含将输入输入其他程序的示例,这正是您无法找到的。
  • 请注意,echo "some text" 在输出中包含引号...

标签: python batch-file


【解决方案1】:

您可以使用subprocess.Popen 为进程提供输入:

from subprocess import Popen, PIPE
p = Popen('batch_test.bat', stdin=PIPE, stdout=PIPE)
output, _ = p.communicate(b'Y\n')

【讨论】:

猜你喜欢
  • 2020-01-31
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多