使用批处理文件将输入从文本文件传递到python程序

时间:2014-10-29 22:53:07

标签: python windows batch-file

我的python程序要求订单中的几个输入并确定需要什么输出。在python shell下使用时工作正常。

现在我正在尝试使用Windows批处理文件创建一个测试程序,该程序将读取文本文件并将每个文本文件中的内容作为每个测试用例的输入。

我是批处理文件的新手,所以我不确定如何在这个批处理文件中提供python输入。我试图通过以下方式传递参数:

python.exe S_bank.py input

但是它只是弹出命令行窗口而没有任何输入。

这是我到目前为止所得到的(根本不起作用):

@echo off

setlocal enabledelayedexpansion

set line=0

for /r %%A in (*.txt) do (

    echo running test %%A >> frontendlog.txt
    start "C:\Python27\python.exe" "Z:\personal\test\S_bank.py"

    for /F %%i in (%%A) do (
        "Z:\personal\test\S_bank.py" %%i >> frontendlog.txt

    )
)

1 个答案:

答案 0 :(得分:0)

如果您的python代码"请求"对于输入,使用批处理自动化它的最简单方法是为每个要测试的案例准备一个答案文本文件,并为python程序将用于检索信息的每个提示添加一行。然后迭代调用python程序的输入文件列表,并将答案文件用管道传输或重定向到它,因此,从控制台的管道中检索信息

所以,对于像

这样的简单代码

test.py

input_var1 = raw_input("Enter something: ")
input_var2 = raw_input("Enter something: ")
print ("you entered: " + input_var1 + ", " + input_var2) 

将文件回复为

FILE1.TXT

one
two

FILE2.TXT

three
four

您将有一个批处理文件

@echo off
    setlocal enableextensions disabledelayedexpansion
    for %%a in ("file*.txt") do (
        <"%%~a" "C:\Python27\python.exe" "c:\somewhere\test.py"
    )

也就是说,对于每个答案文件,调用python程序,但将答案文件作为输入流重定向到程序