Python3:在文件中写入字节数据

时间:2017-03-09 16:53:40

标签: python python-3.x

我想将Bytes写入文本文件,但我的问题是我不知道如何做到这一点。 我尝试用write()函数将字节写入文本文件,但我得到错误:

TypeError: write() argument must be str, not bytes

3 个答案:

答案 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'

相关文档:numpy.frombuffer string formatting

答案 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)