Tôi đã phát hiện ra rằngPython lỗi: byte null trong dấu nhắc nhập
input('some\x00 text')
sẽ nhắc nhở cho some
thay vì some text
.
Từ nguồn, tôi đã tìm ra rằng hàm này sử dụng hàm C PyOS_Readline
, bỏ qua mọi thứ trong dấu nhắc sau byte NULL.
Từ PyOS_StdioReadline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt)
:
fprintf(stderr, "%s", prompt);
https://github.com/python/cpython/blob/3.6/Python/bltinmodule.c#L1989 https://github.com/python/cpython/blob/3.6/Parser/myreadline.c#L251
Đây có phải là một lỗi hay có một lý do cho điều đó?
Vấn đề: http://bugs.python.org/issue30431
Giống như một lỗi. – ivand58
Nó gọi 'readline', và' readline' chính nó sử dụng kiểu dữ liệu chuỗi C NUL-chấm dứt, do đó, có rất ít Python * có thể * làm, khác hơn là hoàn toàn mã hóa lại 'readline'. – torek
Cảm ơn bạn @torek. Tôi đã chỉnh sửa bài đăng –