python - 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
翻译实际上正在发生。如何禁用它?
解决方案
事实证明,这确实是一个 docker 问题。见问题 2789。
推荐阅读
- python - Pyinstaller,如何在尝试将 py 文件转换为 .exe 时解决“ModuleNotFoundError: No module named 'cogs'”错误?
- python - 熊猫风格的循环无法正常工作
- html - 使用 display: flex 创建响应式表单?
- java - @DataJpaTest - 从 @SpringBootApplication 类加载配置
- wordpress - WordPress - 没有附加的翻译甚至字符串都被编辑
- tokenize - sparkNLP 收缩的标记化
- bash - 在列命令中使用多字符列分隔符
- html - 伸展以填充特定大小的动态网格
- c - 在 SIGSEGV 处理程序中分配内存
- java - java.lang.StackOverflowError 当 java.lang.ClassLoader.loadClass(ClassLoader.java:569)