我目前正在通過一些輸入的過程與Pexpect的使用下面的代碼:pexpect無法通過1024個字符的輸入?
p = pexpect.spawn('cat', timeout=5.0)
p.maxread = 5000
p.setecho(False) # prevent the process from echoing stdin back to us
INPUT_LEN = 1024
p.sendline('a'*INPUT_LEN)
print p.readline() # pexpect.TIMEOUT: Timeout exceeded in read_nonblocking().
當INPUT_LEN < 1024,一切工作正常,但對於> = 1024個字符,過程中不接收完整輸入,導致p.readline()上出現「pexpect.TIMEOUT」錯誤。
我試圖分裂我的輸入成片超過1024個字符較小,但是這同一個問題:
p = pexpect.spawn('cat', timeout=5.0)
p.maxread = 5000
p.setecho(False)
INPUT_LEN = 1024
p.send('a'*1000)
p.sendline('a'*(INPUT_LEN-1000))
print p.readline() # pexpect.TIMEOUT: Timeout exceeded in read_nonblocking().
有誰知道如何在1024個字符使與輸入Pexpect的工作?我試着查看源代碼,但它似乎只是調用os.write(...)。我注意到當我從shell運行「cat」並嘗試用「Cmd + V」粘貼> = 1024個字符時,發生了相同的截斷錯誤。但是,如果一切正常我跑 「pbpaste |貓」)
謝謝!
更新: 的呼籲 「os.write()」 返回1025,指示成功寫,但os.read()返回 「\ X07」(單個字符BEL),然後掛在下一次通話,導致超時。
除以os.write()調用分成兩個子1024字節寫入()S,通過調用分離os.fsync(),不會改變任何東西。
'pexpect.spawn'應該被默認設置爲'2000'一個'maxdata'關鍵字,所以很可能這不會適用於你的情況,但你嘗試過它增大? – 2012-02-09 21:29:39
不幸的是,沒有工作;查看最新編輯 – tba 2012-02-09 21:33:26
對不起,我寫了maxdata,但是我的意思是'maxread',我想這是值得一試的。 – 2012-02-09 21:44:31