2017-01-17 73 views
2

我爲c程序開發了一個python gui。本程序要求輸入兩個密碼。 如何等待密碼promt,然後在代碼中插入密碼?Python popen()詢問時輸入密碼

目前,我嘗試通過這樣做:

subprocess.popen.communicate(input) 

但由於程序要求在shell中再次輸入密碼不起作用。

只是爲了在這裏你的理解是程序的流程:

  • 殼:有一些參數執行程序
  • 標準輸出: 「請插入PW 1」
  • 標準輸入:PW1
  • 標準輸出: 「請插入PW 2」
  • 標準輸入:PW2
+0

的可能的複製[無法與子\ [蟒\]的方法提供密碼]( http://stackoverflow.com/questions/25189348/unable-to-provide-password-to-a-process-with-subprocess-python) –

回答

2

您應該考慮使用另一個庫:Pexpect

Pexpect是一個用於產生子應用程序的純Python模塊; 控制它們;並對其產出中的預期模式做出反應。 Pexpect像Don Libes的期待一樣工作。 Pexpect允許腳本 生成一個子應用程序並對其進行控制,就像人類正在鍵入 命令一樣。

下面是代碼,得到用戶名和密碼的樣品連接到FTP服務器時:

import pexpect 
child = pexpect.spawn('ftp ftp.openbsd.org') 
child.expect('Name .*: ') 
child.sendline('bob') 
child.expect('Password:') 
child.sendline('thisisnotasecurepassword') 
+0

謝謝你這樣做,它像一個魅力 – Florian

+0

不錯,有一個偉大的天 ;) – iFlo