尝试在新行上写入文件时出错

时间:2017-03-20 11:15:35

标签: python python-2.7 list file

如下所示,代码的目的是从文件中读取并将名称存储在列表中。系统会提示用户输入任意数量的名称,直到输入“结束”为止。

def name():
    with open("Names.txt") as f:
        data = f.readlines()
    while True:
        name = raw_input('Input: ').upper()
        data.append(name)
        if name == "END":
            data.remove("END")
            data.sort()
            print data
            for i in data:
                f.write("%s\n" % i)
            f.close()       
name()

我正在尝试将有序列表写入如下文件:

for i in data:
    f.write("%s\n" % i)

但是,它会导致以下错误:

f.write("%s\n" % i)
ValueError: I/O operation on closed file

我希望文件包含一些像假设的东西:

Alex
Ben
Callum
David
...

1 个答案:

答案 0 :(得分:2)

因为在尝试将数据写入文件之前文件已关闭。

def name():
with open("Names.txt") as f:
    data = f.readlines()

# here file is closed

while True:
    name = raw_input('Input: ').upper()
    data.append(name)
    if name == "END":
        data.remove("END")
        data.sort()
        print data

        with open("Names.txt", 'w') as f:
            for i in data:
                f.write("%s\n" % i)

name()

编写数据时需要再次打开文件。