2011-06-29 27 views
1

我正試圖編寫一個程序,打印其提示標準錯誤,並將其輸出標準輸出,以便稍後可以處理輸出。如何將Python的getpass()重定向到stderr?

我有點新的Python,但the documentation for getpass()顯示我應該能夠選擇流:

getpass.getpass([prompt[, stream]]) 

我已經嘗試了各種論點,將getpass,但我似乎無法得到它的在stderr中提示。任何幫助將不勝感激,謝謝。

>>> password = getpass.getpass("Password", sys.stderr) 
TypeError: unix_getpass() takes at most 1 argument (2 given) 
+4

'getpass.getpass(prompt,sys.stderr)'不適合你?當你這樣做的時候會發生什麼,而不是你想要什麼?請注意,不像其他提示,密碼提示通常不應該被重定向到控制終端之外,getpass的許多要點在於它能夠正確使用。 (當然,它不會回顯密碼。) – zwol

+0

你能向我解釋什麼是錯誤的重定向只是提示?當我輸入密碼= getpass.getpass(「密碼」,sys.stderr)我得到這個: TypeError:unix_getpass()最多隻需要1個參數(給出2) – chindes

+1

任何時候你要直接要求響應用戶而不是標準輸入,配置文件或命令行參數(並且密碼只是在Unix命令行程序中應該這樣做的唯一時間),則必須直接提示他們,以便他們知道發生了什麼。想象一下,如果我做了''ssh zack @ otherhost noisy_command 2>/dev/null'',並且ssh在stderr而不是'/ dev/tty'上提示我輸入密碼 - 它似乎無緣無故掛起。 – zwol

回答

4

在python 2.5的溶液中加入流參數getpass.getpass(),並且不是在現有版本。

+0

啊哈!而已。我忘了我正在使用Python 2.4,這是一個相當重要的信息。謝謝一堆。 – chindes

相關問題