Python写入字典到文件触发TypeError:参数应为类字节对象或ASCII字符串
问题解决:TypeError: argument should be a bytes-like object or ASCII string, not 'tuple'
错误原因
你传给base64.b64decode()的V10是一个元组((['file_name'], ['binary'], ['type'])),但base64.b64decode()只接受base64编码的字符串或字节对象,因此触发类型错误。这个V10完全是无效输入,和你要写入的二进制内容无关。
修正方案
你的核心需求是把字典中binary字段的base64编码内容解码后写入文件,直接取对应字典值即可,不需要创建那个无用的元组。同时推荐用with语句管理文件,避免手动关闭的潜在问题。
修正后的代码
# 保留你原有的字典创建逻辑 final_dict = {} final_dict['file_name'] = d['filename'] final_dict1 = {} final_dict1['binary'] = temp final_dict1['type'] = temp1 # 用with语句自动管理文件生命周期 with open(final_dict['file_name'], 'wb') as outputfile: # 直接取final_dict1中的binary字段(base64编码字符串)进行解码写入 outputfile.write(base64.b64decode(final_dict1['binary']))
关键说明
- 直接使用
final_dict1['binary']作为base64.b64decode()的参数,这才是你需要解码的base64内容。 - 用
final_dict['file_name']作为输出文件名,和你字典中存储的文件名对应,更符合预期。 with语句会在代码块执行完毕后自动关闭文件,比手动调用close()更安全可靠。
内容的提问来源于stack exchange,提问作者Women_it_2022
相关产品推荐
相关产品推荐

