Python调用write方法写文件报TextIOWrapper.write()无关键字参数错误
报错原因
print()函数原生支持传入多个位置参数,同时兼容sep、end等关键字参数,会自动完成多参数的拼接处理;但文件对象的write()方法仅接受单个字符串类型的入参,不支持多参数传入,也不识别sep关键字,这是你触发TypeError的核心原因。- 你的代码还存在缩进错误:
writerec函数内的while循环、变量x的初始化逻辑缩进层级有误,不在with open的上下文管理范围内;且使用with open语法时,上下文管理器会自动在代码块执行结束后关闭文件,不需要手动调用output.close()。
修复方案
推荐你直接复用原有print的拼接逻辑,只需要给print新增file参数指定输出目标为打开的文件即可,修改成本最低:
def writerec(): # 指定encoding避免不同系统下出现乱码问题 with open("output.txt", "w", encoding="utf-8") as output: x = 1 while x < len(reccomendlist): # 仅新增file参数指定输出到文件,原有拼接逻辑完全不变 print("User-ID",x,': ', "Movie-ID",reccomendlist[x][0],', ',"Movie-ID",reccomendlist[x][1],', ',"Movie-ID",reccomendlist[x][2],', ',"Movie-ID",reccomendlist[x][3],', ',"Movie-ID",reccomendlist[x][4], sep = '', file=output) x += 1
如果你坚持使用write()方法,需要先将所有内容拼接为单个字符串,再传给write(),同时要手动添加换行符\n(print默认会自动加换行,write不会),示例如下:
output.write(f"User-ID{x}: Movie-ID{reccomendlist[x][0]}, Movie-ID{reccomendlist[x][1]}, Movie-ID{reccomendlist[x][2]}, Movie-ID{reccomendlist[x][3]}, Movie-ID{reccomendlist[x][4]}\n")
内容的提问来源于stack exchange,提问作者TheDoctor10XD
相关产品推荐
相关产品推荐

