2012-03-15 33 views
0

使用Python 2.7stdin中的數據流;防止提示用戶輸入

情況: 我有一些Python代碼(用戶提交的),我需要我的服務器上執行(Django上運行),並返回結果。 (不要擔心安全風險,它需要首先通過安全檢查點)。

假設Python代碼存儲在變量newCode

我做到以下幾點:

code = compile(newCode, '<string>', 'exec') 
exec code 

現在假設newCode件是:

a = raw_input('wa ') 
print a 

服務器將凍結在這點。

任何程序的輸入都存儲在數據庫中。它應該從數據庫中讀取數據,並在調用input或raw_input時插入程序。輸入過程應該是自動的。

在運行exec之前將輸入流式傳輸到stdin並在執行期間讀取它的任何方式?

Pleeaase help!提前致謝。 :)

回答

0

更換sys.stdin含在讀。

+0

能否請您給我一個例子,文字StringIO? – 2012-03-15 13:16:38

+0

'new_input = StringIO.StringIO('some input'); sys.stdin = new_input' – 2012-03-15 13:18:13

+0

謝謝,工作完美! :) – 2012-03-15 14:36:28