python-3.x - 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'
我不确定如何将数据定义为字节?
解决方案
考虑将文件模式从
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
打开一个文件以二进制格式追加。如果文件存在,则文件指针位于文件末尾。也就是说,文件处于附加模式。如果文件不存在,它会创建一个新文件进行写入。
推荐阅读
- spring - 在heroku上的gitlab CD部署期间出现Spring Boot错误的Maven项目
- spring-boot - 将图像上传到数字海洋空间正在返回错误请求
- ffmpeg - ffmpeg在连接视频时复制音频编解码器类型
- xml - 用于零售商定价的 Google 表格导入 XML
- ios - 类型不匹配(Swift.Dictionary
, - html - 当缩小窗口大小时,如果可能的话,我需要使用媒体查询在页面上填充文本以提高可读性
- bash - 从 shell 脚本的输出中捕获和存储一个值,同时还显示进度?
- spring - Spring和Neo4j数据库:无法验证用户
- symfony - symfony 5.2 即使安装了 libcurl,如何强制使用 amphp 客户端
- onclick - 我想让它一旦触发“selectAll”功能,所有的复选框都会被选中