python写入文件

时间:2010-12-06 18:21:36

标签: python

在尝试编译以下代码时,我不断收到“写入已关闭的文件错误”:

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()

4 个答案:

答案 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运算符。