首页 > 解决方案 > Python 3 和 TypeError:需要一个类似字节的对象,而不是“str”错误

问题描述

尝试在 python 3 中运行此代码

def write_file(file_name, data):

    if file_name is None:
        print ('file_name cannot be none\n')
        sys.exit(0)

    with open(file_name, 'ab') as fp:
        if fp:
            fp.seek(0, os.SEEK_END)
            fp.write(data)
            fp.close()
        else:
            print ('%s write fail\n' % file_name)

并看到此错误:

TypeError: a bytes-like object is required, not 'str'

我不确定如何将数据定义为字节?

标签: python-3.x

解决方案


考虑将文件模式从

with open(file_name, 'ab') as fp:

with open(file_name, 'a') as fp:

由于 'ab' 模式尝试以二进制格式打开文件。

根据https://www.tutorialspoint.com/python3/python_files_io.htm

格式:ab

打开一个文件以二进制格式追加。如果文件存在,则文件指针位于文件末尾。也就是说,文件处于附加模式。如果文件不存在,它会创建一个新文件进行写入。


推荐阅读