要運行命令,並回答'y'
如果問題是使用pexpect
問:
#!/usr/bin/env python
import os
import pexpect # $ pip install pexpect
pexpect.run("module load xyz", events={
"Are you sure you want to clear all loaded modules": "y" + os.linesep
})
如果你想使用pexpect.spawn
直接再簡化的版本可能看起來像:
#!/usr/bin/env python
import pexpect # $ pip install pexpect
child = pexpect.spawn("module load xyz")
while True:
i = child.expect(["Are you sure you want to clear all loaded modules",
pexpect.EOF, pexpect.TIMEOUT])
if i == 0:
child.sendline('y')
else: # child exited or the timeout happened
break
來源
2015-03-25 08:40:45
jfs
發生了什麼事當你嘗試過嗎? – mhawke 2015-03-25 00:29:45
給出他的代碼會發生什麼有三種可能性。 1)它會掛起,等待文本出現,然後出現換行符。 2)如果在輸出中找不到請求的字符串,會引發一個'EOF'錯誤。 3)它會掛起,因爲沒有它正在等待緩衝區填滿的換行符。觀點可以挑剔。 – Vorticity 2015-03-25 00:47:10
無法嘗試它,因爲模塊命令中有一些問題。將與其他命令魔杖嘗試讓你知道.. – 2015-03-26 18:34:23