一直在尝试将数据打印到输出文件并不断得到此错误。当我将数据打印到屏幕上(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
-
您不需要
output.close()
行,with-block已经为您关闭了文件。 -
你的缩进是错误的。应该是
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
- 您可以通过 来迭代
reccomendlist
for x, element in enumerate(reccomendlist):
element
不是
x = 1
while x < len(reccomendlist):
element = reccomendlist[x]
x += 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)