Hành vi đầu ra của bảng điều khiển BPython không mong đợi


1

Tôi đang sử dụng BPython để chạy các tập lệnh Python và tôi thấy đầu ra của bàn điều khiển có hành vi khác với bảng điều khiển Python thông thường .. Ví dụ đoạn trích nhỏ này:

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

đầu ra trong Python:

99                                            |
>>>                                           |

nhưng kết quả đầu ra trong BPython:

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

Những con số rõ ràng ngẫu nhiên này chỉ phụ thuộc vào chiều rộng bàn điều khiển của tôi . Tôi nghi ngờ con trỏ BPython được chuyển sang phải trên mỗi cuộc gọi đến printmặc dù chuỗi bắt đầu bằng a \r. Khi đến cuối bên phải của giao diện điều khiển, dòng hiện tại không thể bị xóa nữa và vì vậy một dòng mới được bắt đầu.

Bất kỳ cách khắc phục điều này?

CẬP NHẬT: (báo cáo lỗi ở đó )

Câu trả lời:


1

Tôi đề nghị sử dụng bpython-cursesthay thế nếu bạn cần hành vi này, bởi vì (như bạn đã nhận thấy) frontend bpython tiêu chuẩn không giải quyết vấn đề này một cách chính xác. Bạn gần đúng trong lời giải thích của mình: bpython đang ghi lại kết quả đầu ra cho một sys.stdout giả và sau đó cố gắng đoán về cách hiển thị nó. Dự đoán của nó là rất ngây thơ, và mặc dù nó chiếm một số lượng hạn chế các chuỗi thoát định dạng thiết bị đầu cuối, nhưng nó không tính đến lợi nhuận vận chuyển. Con trỏ được di chuyển đến một dòng trên thiết bị đầu cuối và dòng đầu ra được tính toán đó được viết, dẫn đến những gì bạn nhìn thấy.


Đây dường như là những gì tôi đang cần. Cảm ơn bạn! :)
iago-lito
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.