TypeError: TextIOWrapper.write()不接受关键字参数



一直在尝试将数据打印到输出文件并不断得到此错误。当我将数据打印到屏幕上(printrec())时,一切正常,但writerec()不起作用。我不是很熟悉python,我试过几个不同版本的output.write()。

def printrec():
x = 1
while x < len(reccomendlist):
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 = '')
x += 1
def writerec():
with open("output.txt", "w") as output:
#encoding = 'utf-8'
x = 1
while x < len(reccomendlist):
output.write("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 = '')
x += 1
output.close()
#with open("./output.txt", "w") as text_file:
#x = 1
# while x < len(reccomendlist):
#text_file.write("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 = '')
#x += 1
  1. 您不需要output.close()行,with-block已经为您关闭了文件。

  2. 你的缩进是错误的。应该是

with open("output.txt", "w") as output:
x = 1
while x < len(reccomendlist):
output.write("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 = '')
x += 1
  1. 您可以通过
  2. 来迭代reccomendlist
for x, element in enumerate(reccomendlist):
element

不是

x = 1
while x < len(reccomendlist):
element = reccomendlist[x]
x += 1
  1. 不能将sep参数添加到write,这是print参数。使用file参数打印:
for x, element in enumerate(reccomendlist):
print("User-ID",x,': ', "Movie-ID",element[0],', ',"Movie-ID",element[1],', ',"Movie-ID",element[2],', ',"Movie-ID",element[3],', ',"Movie-ID",element[4], sep = '', file=output)

根据你的Python版本,它甚至可以更可读:

for x, row in enumerate(reccomendlist):
print(f"User-ID{x}", end=': ', file=output)
print(', '.join(f"Movie-ID{element}" for element in row), file=output)