Nie można wyczyścić bufora pexpect w python3.X

9

Korzystam z modułu Pexpect do łączenia się ze zdalnym serwerem. Mogę z powodzeniem wysyłać i odbierać odpowiedzi. Próbuję wyczyścić bufor, spodziewając się czegoś śmieci i zakładając, że wyczyści bufor, ale tak naprawdę nie wyczyści bufora.

Poniżej znajduje się mój przykładowy kod

import pexpect
obj = pexpect.spawn("telnet 172.16.250.250", maxread=8192)

obj.sendline("")
result = obj.expect(expected, timeout=3) --> getting output here `OUTPUT 1`
obj.sendline("1")
time.sleep(3)
try:
    obj.expect("Asdfgdsad", timeout=2)  --> I am expecting to clear buffer here but it did not

except pexpect.TIMEOUT:
    pass
print("buffer is", obj.buffer) . --> This is printing output `OUTPUT 1` as I have meniotned

Robię tu coś złego? Używam python3.7. Jeśli dobrze pamiętam, działało poprawnie w python2.X

Nitesh
źródło

Odpowiedzi:

3

Możesz wyczyścić bufor pexpects, czytając go jawnie, IIRC.

flush = ''
while not obj.expect(r'.+', timeout=5):
    flush += obj.match.group(0)
Aiyion.Prime
źródło