2014-10-29 39 views
0

我的python程序要求輸入順序中的幾個輸入並確定需要輸出什麼。在python shell下使用時可以正常工作。使用批處理文件將輸入從文本文件傳遞到python程序

現在我試圖使用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 

    ) 
) 
+0

是否有某些原因讓你不想在python中編寫測試代碼?在批處理文件中,您可以執行的操作很少,您無法在python中執行此操作。 – 2014-10-29 23:00:07

+0

@FredS我甚至不會碰批,如果他們沒有要求我在批處理文件中做,聳聳肩 – user3514453 2014-10-29 23:03:24

+0

嗯,我不知道他們是誰,但你可以使用一個非常簡單的批處理文件啓動「test_S_bank.py」。然後,該python文件讀取您的測試用例輸入文件,並將值傳遞給正在測試的代碼並檢查結果。只需使用批處理文件啓動您的測試。 – 2014-10-29 23:08:52

回答

0

如果你的Python代碼「問」爲輸入,最簡單的方法將其與批次是準備的自動化爲每個要測試的案例回答文本文件,併爲python程序將用於檢索信息的每個提示提供一行。然後遍歷輸入文件調用Python程序與答案文件,管道或重定向到它的列表,因此,該信息是從管中檢索insted的控制檯

所以,對於一個簡單的代碼一樣

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程序,但重定向應答文件作爲程序的輸入流

+0

謝謝,它工作得很好,只有一個問題,是<「%%〜a」表示使用它作爲以下命令的輸入嗎? – user3514453 2014-10-30 20:15:49

+0

@ user3514453,是的,'%%〜a'是'for'循環引用的文件(如果不存在引號),並且重定向操作符'<'爲正在處理的命令分配輸入流 – 2014-10-30 21:19:31

相關問題