예기치 않은 Python 콘솔 출력 동작


1

나는 파이썬 스크립트를 실행하기 위해 BPython을 사용하고 있으며, 콘솔 출력이 일반적인 파이썬 콘솔과는 다른 행동을하는 것을 발견했다. 예를 들어이 작은 조각 :

import time
for i in range(100):
    time.sleep(.1)
    print("\r{}".format(i), end="")

파이썬에서 출력 :

99                                            |
>>>                                           |

BPython에서 출력 :

26                                            |
51                                            |
75                                            |
99                                            |
>>>                                           |
                                              ^ end of the console

이 명백하게 난수는 내 콘솔에만 달려 있습니다. . 각 호출시 Python 커서가 오른쪽으로 이동하는 것으로 의심됩니다. print 문자열이 a로 시작하더라도 \r. 콘솔의 오른쪽 끝에 도달하면 현재 줄을 더 이상 지울 수 없으므로 새 줄이 시작됩니다.

이걸 고치는 방법은 없나요?

업데이트 : (버그 신고 그곳에 )

답변:


1

사용하는 것이 좋습니다. bpython-curses 대신에 (당신이 눈치 챘을 때) 표준 bpython 프론트 엔드가이 문제를 올바르게 다루지 않기 때문에이 동작이 필요하다면. 귀하의 설명에 대략 맞습니다 : bpython은 출력을 가짜 sys.stdout에 로깅 한 다음이를 렌더링하는 방법을 추측하려고합니다. 그것의 추측은 매우 순진하며 제한된 수의 터미널 형식 이스케이프 시퀀스를 고려하지만 캐리지 리턴을 고려하지 않습니다. 커서가 터미널의 행으로 이동하고 그 계산 된 출력 행이 표시되어 결과를 보게됩니다.


이것은 내가 필요로하는 것 같다. 고맙습니다! :)
iago-lito
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.