将批处理文件输出管道传输到 Python 脚本

Posted

技术标签:

【中文标题】将批处理文件输出管道传输到 Python 脚本【英文标题】:Piping Batch File output to a Python script 【发布时间】:2010-10-24 22:27:00 【问题描述】:

我正在尝试编写一个运行批处理文件并将该批处理文件的命令行输出作为输入的 python 脚本(在 Windows 中)。批处理文件运行我无权访问的进程,并根据这些进程是否成功提供输出。我想从批处理文件中获取这些消息并在 python 脚本中使用它们。有人对如何做到这一点有任何想法吗?

【问题讨论】:

【参考方案1】:

试试 subprocess.Popen()。它允许您将 stdout 和 stderr 重定向到文件。

【讨论】:

【参考方案2】:

这是一个运行 test.bat 并显示输出的示例 python 脚本:

import os

fh = os.popen("test.bat")
output = fh.read()
print "This is the output of test.bat:", output
fh.close()

test.bat 来源:

@echo off
echo "This is test.bat"

【讨论】:

【参考方案3】:
import subprocess

output= subprocess.Popen(
    ("c:\\bin\\batch.bat", "an_argument", "another_argument"),
    stdout=subprocess.PIPE).stdout

for line in output:
    # do your work here

output.close()

请注意,批处理文件最好以“@echo off”开头。

【讨论】:

以上是关于将批处理文件输出管道传输到 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

捕获通过管道传输到批处理文件的真正 STDIN

使用管道将 Windows 命令解析为批处理文件中的变量 [重复]

为啥我的 Python3 脚本不愿将其输出通过管道传输到 head 或 tail(sys 模块)?

为啥将命令输出定向到变量在批处理文件中不起作用

使用批处理脚本将段落输出到 txt 文件

将参数从批处理文件发送到 Python 脚本