Python将字节写入文件

Bla*_*543 106 python

我有一个返回字符串的函数.该字符串包含回车符和新换行符(0x0D,0x0A).但是,当我写入文件时,它只包含新的换行符.有没有办法让输出包括回车和新换行.

msg = function(arg1, arg2, arg3)
f = open('/tmp/output', 'w')
f.write(msg)
f.close()
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 198

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

f = open('/tmp/output', 'wb')
Run Code Online (Sandbox Code Playgroud)

  • 由于OP似乎使用的是非Windows平台,因此仅适用于Py3.在Py2中,你需要使用`io.open`. (7认同)
  • 我认为这是python本身的一个错误,鉴于python可以在运行时检测数据类型,并且可以在二进制和文本输入之间进行检测,我认为它应该在python本身中修复,为什么数百人最终出现在这个页面上,如果可以通过python stdlib中的if语句避免它,如果您同意,请投票,如果必须,请投票给我做遗忘。 (3认同)
  • @FelipeValdes 不幸的是,如果它被错误地检测到,在编写内容时可能会带来惊喜。更令人讨厌的是,错误检测只会发生在某些奇怪的边缘情况下,这些情况变得令人惊讶且难以追踪。依靠显式行为,即使这意味着我们有这个问题,也可以确保我可以确定 IO 在不同场景下的行为方式。 (2认同)
  • 字节文件的扩展名是什么? (2认同)

Eti*_*eni 31

这只是一个“更干净”的版本with

with open(filename, 'wb') as f: 
    f.write(filebytes)
Run Code Online (Sandbox Code Playgroud)

  • 使用“with”的最佳实践,因为文件对象会自动关闭。 (3认同)

yay*_*aya 11

写入字节并创建文件(如果不存在):

f = open('./put/your/path/here.png', 'wb')
f.write(data)
f.close()
Run Code Online (Sandbox Code Playgroud)

wb表示以write binary模式打开文件。