2015-06-17 29 views
-3

我試圖做一個Python程序,可以自動糾正檢查,我有額外的時間,不想等待我的老師手動糾正它們... Annyways當我使用python argv像這樣的:Python argv和cmd

import sys 

def hello(a): 
    print(a) 

a = sys.argv[1:] 
hello(a) 

,我想插入一個列表,我再也不能只插入一個變量,因爲這樣的argv的作品,我不知道名單有多長,因爲不是所有的任務是相同。我使用subprocess.check_output在我的檢查器在cmd窗口中運行它之後返回程序輸出...現在如果有人知道更好的方法來糾正程序而不讓學生用sys.argv替換它們的輸入(如果有的話是一個更好的方式來輸入參數到一個單獨的python程序,當你運行它)或可以告訴我如何解決argv問題?

+1

什麼你的意思是「插入一個列表」?插入到哪裏? –

+1

你是否正在用'subprocess'調用另一個Python腳本?爲什麼不直接'導入'並直接使用函數? – jonrsharpe

+0

@BryanOakley有2個程序,我上面寫的correcter和dummy測試程序,重點是讓我的correcter在windows cmd上運行程序需要的論證的上述程序... – simon101

回答

1

你可以使用Popen.communicate代替check_output

echo.py:

print(input()) 

test.py:

from subprocess import Popen, PIPE 
p = Popen(['python3', 'echo.py'], stdout=PIPE, stdin=PIPE, stderr=PIPE) 
out, err = p.communicate(input="hello!".encode()) 
assert out.decode().strip() == "hello!" 
+0

我會看看,謝謝! – simon101