【问题标题】:Passing inputs from a text file to python program using batch file使用批处理文件将输入从文本文件传递到 python 程序
【发布时间】:2014-10-29 22:53:06
【问题描述】:

我的 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

    )
)

【问题讨论】:

  • 有什么原因你不想用python写你的测试代码吗?在批处理文件中可以做的事情很少在 python 中做不到。
  • @FredS 如果他们不要求我在批处理文件中做,我什至不会碰批处理,耸耸肩
  • 好吧,我不知道“他们”是谁,但您可以使用一个非常简单的批处理文件来启动“test_S_bank.py”。然后该 python 文件读取您的测试用例输入文件并将值传递给您正在测试的代码并检查结果。只需使用批处理文件启动您的测试。
  • 同上@Fred 的问题。你知道你的 Python 程序是否接受参数吗?尝试做 python.ex /?或 pyton.exe /help 如果它返回任何帮助可能会有所帮助,但如果不返回则不是结论性的。

标签: python windows batch-file


【解决方案1】:

如果您的 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程序,但将应答文件作为输入流重定向到程序中

【讨论】:

  • 谢谢,效果很好,再问一个问题,
  • @user3514453,是的,%%~afor 循环引用的文件(如果存在则不带引号),重定向运算符 &lt; 为正在处理的命令分配输入流
猜你喜欢
  • 1970-01-01
  • 2019-01-04
  • 2017-05-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
相关资源
最近更新 更多