2016-06-11 32 views
0

假設我們有一個簡單的Python代碼:讀取輸入和提高的錯誤更少的投入

num1 = input() 
num2 = input() 
res = sum(num1,num2) 

按我的要求,我應該能上面的代碼轉換(即我作爲來自用戶的一些輸入)以這種方式,我應該能夠從預定義的文件向其提供輸入。怎麼做 ?一旦我們添加了代碼,上面的工作。但是,如果我們添加另一個輸入,如下面的「num3 = input()」,它應該在讀取一行時引發錯誤,如EOFError:EOF。如何提出這樣的錯誤?

num1 = input() 
num2 = input() 
num3 = input() 
res = sum(num1,num2) 

請讓我知道任何問題。

回答

1

據我所知,沒有辦法告訴pythons輸入函數讀取除stdin之外的任何內容。如果不重寫代碼以使用文件對象,則可以將文件重定向到stdin。這會在文件結尾處發送一個eof,並提出您期望的錯誤。

例如運行:

python script.py < file.in 

或者,如果你對文件的第一行家當,你做了它可執行:

./script.py < file.in 

這一切都是假設你運行基於Linux或POSIX shell的東西。

+1

你可以說'sys.stdin = open(path)'然後'input'會相應地作出響應。 –

+0

我從來沒有想過通過sys.stdin進行分配!雖然通常我建議不要在文件中覆蓋這些常量。您稍後可能想要引用原始常量,或者如果您的代碼成爲共享資源,則其他依賴關係可能會失敗! –

+0

謝謝你的工作。我們可以用java來做同樣的事嗎?像java abc user1305989