我在'wb'模式下使用字节数组
for i in range(len(mas)):
message.write(mas[i])
在我必须将数据写入新行的文件后,例如'w'模式下的'\ n'
for i in range(3):
message.write(str(i))
message.write("\n")
>>>0
>>>1
>>>2
>>>3
我该怎么做?
答案 0 :(得分:2)
要将字符串写入二进制文件,例如"\n"
进入wb
模式,您必须先调用string.encode('utf-8')
或您需要的任何其他编码encode。
例如,要将消息写入二进制文件:
with open("a.txt", "wb") as f:
line = str(0) + "\n\n"
f.write(line.encode('utf-8'))
这会写0\n\n
。要写入0到3之间的数字,然后是空行:
with open("a.txt", "wb") as f:
for i in range(4):
line = str(i) + "\n\n"
f.write(line.encode('utf-8'))
编码的换行符正确打印为换行符,因此以下行是等效的:
open('a.txt', 'w').write('\n')
open('a.txt', 'wb').write('\n'.encode('utf-8'))
open('a.txt', 'wb').write(b'\n')
要打印文字\n
而不是换行符,请使用另一个反斜杠\\n
或写r'\n'
转义反斜杠以创建“原始”字符串。
答案 1 :(得分:0)
我认为你需要在每个bytearrays之后为你的文件写一个换行字节串:
for i in range(len(mas)):
message.write(mas[i])
message.write(b"\n")
请注意,编写循环的更自然(Pythonic)方法是直接在mas
上迭代,而不是迭代范围然后编制索引。您还可以将两个write
调用合并为一个:
for line in mas:
message.write(line + b"\n")