我想将Bytes写入文本文件,但我的问题是我不知道如何做到这一点。 我尝试用write()函数将字节写入文本文件,但我得到错误:
TypeError: write() argument must be str, not bytes
答案 0 :(得分:2)
您需要以二进制模式而不是文本模式打开文件:
import io
with io.open('/tmp/thefile.dat', 'wb') as f:
f.write(some_bytes)
答案 1 :(得分:1)
如果您愿意将字节写入文本文件,则可以使用base64
。该文件的任何读者都必须知道这一点。
import base64
b'\xff\x00'.decode()
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
base64.b64encode(b'\xff\x00').decode()
# '/wA='
base64.b64decode('/wA='.encode())
# b'\xff\x00'
如果你想要数字,一种方法就是使用numpy:
import numpy as np
by = b'\x00\xffhello'
' '.join(len(by) * ['{:d}']).format(*np.frombuffer(by, np.uint8))
# '0 255 104 101 108 108 111'
' '.join(len(by) * ['{:02x}']).format(*np.frombuffer(by, np.uint8))
# '00 ff 68 65 6c 6c 6f'
答案 2 :(得分:-1)
供参考:https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files
with open('some.txt', 'wb') as f:
f.write(some_bytes)