如下所示,代码的目的是从文件中读取并将新名称存储在列表中。系统会提示用户输入任意数量的名称,直到输入“结束”为止。
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
...
答案 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()
编写数据时需要再次打开文件。