我有使用Pexpect的,看起來像這樣這條巨蟒功能:如何使Pexpect的命令執行無交互()在我的計劃
def executeCommandWithOtherUser(command):
p = pexpect.spawn('su', ['otherUser'])
p.expect('Password:')
p.sendline('1234')
prompt = '.*$'
p.expect(prompt)
p.sendline(command)
#p.interact()
p.close()
return
當我嘗試這個代碼,它不執行命令(使用例如觸摸x.txt進行測試)。如果啓用pexpect日誌記錄,我可以看到該命令,但在程序結束時沒有發生任何事情。如果我用p.interact()取消註釋,它確實有效。但是,這給用戶的控制權,我需要手動退出程序。
爲什麼函數不執行沒有交互的命令?我能做些什麼來使它工作?
在命令後面加上'p.expect(prompt)'*,等待命令結束。 – jfs
我試過了,但沒有改變行爲。 – pigelin
在提示符中跳出美元符號:'r'\ $''(否則'$'是模式內的正則表達式元字符) – jfs