Python将字节写入文件


143

我有一个返回字符串的函数。该字符串包含回车符和换行符(0x0D,0x0A)。但是,当我写入文件时,它仅包含换行符。有没有一种方法可以使输出包括回车和换行符。

msg = function(arg1, arg2, arg3)
f = open('/tmp/output', 'w')
f.write(msg)
f.close()

阅读file.__doc__
wim 2012年

Answers:


257

如果要写入字节,则应以二进制模式打开文件。

f = open('/tmp/output', 'wb')

8
由于OP似乎正在使用非Windows平台,因此这仅在Py3中有效。在Py2中,您需要使用io.open
lvc 2012年

2
我认为这是python本身的错误,因为python可以在运行时检测数据类型,并且可以在二进制和文本输入之间进行检测,我认为应该在python本身中进行修复,为什么会有数百人最终出现在此页面中,如果可以通过python stdlib中的if语句来避免此问题,如果同意,请向上投票,如果必须,请向下投票我遗忘。
菲利佩·瓦尔德斯

2
@FelipeValdes不幸的是,如果内容被错误地检测到,则在编写内容时可能会引起意外。更令人烦恼的是,错误检测只能在某些奇怪的边缘情况下发生,这些情况变得令人惊讶且难以追踪。而是依靠显式行为,即使这意味着我们有这个问题,也可以确保我可以确定IO在不同情况下的行为方式。
利亚姆·道森

1
字节文件有什么扩展名?
Chia yongkang

@FelipeValdes与最小惊奇/惊讶感的原理有关(en.wikipedia.org/wiki/Principle_of_least_astonishment)。您的方法将更恰当地命名为:open_and_detect_file_type()
henrycjc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.