Python3.7运行Python2代码报错:TypeError:需类字节对象而非'str'
解决CSV写入时的
TypeError: a bytes-like object is required, not 'str'问题 问题根源
你用wb(二进制写入模式)打开CSV文件,但Python的csv.writer默认输出字符串内容,二进制模式要求写入字节对象,两者类型不匹配导致报错。
修复方案
把文件打开模式从wb改为w,同时指定编码(推荐utf-8),这是最简洁且符合csv模块设计逻辑的解决方式:
修改后的代码片段:
with open(save_dir + '/specs.csv', 'w', encoding='utf-8', newline='') as csvfile: writer = csv.writer(csvfile, delimiter=',') if FLAGS.priv_agent: writer.writerow([0] + [PrivacyAgent.get_m(r) for r in range(len(Delta_accountant)-1)]) else: writer.writerow([0] + [FLAGS.m]*(len(Delta_accountant)-1)) writer.writerow(Delta_accountant) writer.writerow(Accuracy_accountant)
补充说明
- 添加
newline=''是csv模块的官方推荐写法,能避免不同操作系统下换行符出现异常。 - 若坚持使用二进制模式(不推荐),需给
csv.writer指定字节格式的换行符,但会增加代码复杂度,远不如文本模式省心。
内容的提问来源于stack exchange,提问作者Yi Eric
相关产品推荐
相关产品推荐

