在尝试编译以下代码时,我不断收到“写入已关闭的文件错误”:
fout = open('markov_output.txt', 'w')
for i in range( MAXGEN ) :
# get our hands on the list
key = (w1,w2)
sufList = table[key]
# choose a suffix from the list
suf = random.choice( sufList )
if suf == NONWORD : # caught our "end story" marker. Get out
if len( line ) > 0 :
fout.write(line)
break
if len( line ) + len( suf ) > MAX_LINE_LEN :
fout.write(line)
line = ""
line = line + " " + suf
w1, w2 = w2, suf
fout.close()
答案 0 :(得分:6)
每次循环都关闭fout
。取消缩进fout.close()
,它应该按预期工作。
答案 1 :(得分:3)
你不想让fout.close()
在循环之外吗?
如果您使用的是Python 2.5或更高版本,则可能需要考虑使用with
:
with open('markov_output.txt', 'w') as fout:
# Your code to write to the file here
这将在您完成后自动关闭文件,以及是否发生任何异常。
答案 2 :(得分:1)
fout.close()
似乎在for循环中。
针对预期行为取消缩进该行。
答案 3 :(得分:1)
您的fout.close()
发生在for
循环中。它将在第一个项目之后关闭,而不是在操作结束时关闭。
为了清晰/健壮,建议在处理文件时使用with
运算符。