2017-03-31 37 views
2

我想在沒有回顯的情況下在Windows的IDLE終端中輸入密碼。關閉IDLE中getpass.getpass()的回顯

正常輸入密碼,可以使用該功能getpass.getpass()Python,但在IDLE有出現以下警告消息:

GetPassWarning: Can not control echo on the terminal. 
Warning: Password input may be echoed. 

我發現,這是因爲IDLE替換SYS。與不同的對象標準輸入:

if sys.stdin is not sys.__stdin__: 
    return fallback_getpass(prompt, stream) 

但是,我無法找到一個解決方案。有沒有人有答案或另一種方式來輸入密碼到IDLE終端沒有回聲?

回答

2

作爲一個對IDLE內部有一定了解的IDLE維護者,我不認爲可以抑制字符顯示,但不會改變對input('prompt')的響應行爲,而不會對IDLE代碼進行重大更改。

但即使是因爲它調用的unix_getpass一個將不足以getpass.getpasswin_getpass,或者default_getpass,與前兩部使用system_specific低級別的功能是旁路標準輸入。

就設計意圖而言:正如其名稱所示,IDLE是程序開發環境。正常開發程序,有時必須由Python直接執行,而不經過IDLE。 Python通常運行在一個終端窗口中。 IDLE的Shell基於一個tkinter Text小部件,它是一個多行編輯器,而不是終端。這就是爲什麼人們可以一次輸入,調用和編輯完整的多行語句而不是一行一行。