首页 > 解决方案 > Python 的 sys.stdout.buffer.write() 在 Linux 上增加了额外的 0x0d

问题描述

考虑以下代码:

docker run -it --rm python:3.7.1-alpine3.8 \
    python -c "import sys; sys.stdout.buffer.write( b'\x0a' )" | hexdump

哪个打印:

0000000 0d 0a                                          
0000002

由于sys.stdout.buffer是二进制流并且平台是Linux(即不是Windows)(参见0A hex bug on writing to file?),我期待输出是普通的0x0a

在我看来,\n->\r\n翻译实际上正在发生。如何禁用它?

标签: pythonconsoleescapingnewline

解决方案


事实证明,这确实是一个 docker 问题。见问题 2789


推荐阅读