在python中写入文本文件时出错[对关闭的文件执行I/O操作]

2024-04-19 20:20:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python创建一个文件,但遇到了一个错误。我不知道为什么会出现这种情况,我确实在网上查过,但找不到任何解决问题的方法。我已经导入了random,我有一个enc1的列表

f = open("Skins.txt",'w')
for r in range(1,1201):
   f.write(str(r))
   f.write(",")
   f.write(random.choice(enc1))
   f.write("\n")
   f.close()

错误:

    f.write(str(r))
    ValueError: I/O operation on closed file.

Tags: 文件方法intxt列表for错误情况
2条回答

您正在关闭循环中的文件,因此在第一次迭代之后,该文件将被关闭,因此尝试写入该文件的操作将失败,并出现错误。你知道吗

我建议使用^{} statement打开文件(这样它会自动为您关闭文件),这样就不会出现这种问题。而且,您不需要所有这些不同的f.write()语句,您可以使用^{}并在单个.write()中执行相同的操作。你知道吗

示例-

with open("Skins.txt",'w') as f:
    for r in range(1,1201):
       f.write("{},{}\n".format(r, random.choice(enc1)))

您正在尝试在每次迭代结束时关闭该文件。将关闭操作移出回路块。你知道吗

f = open("Skins.txt",'w')
for r in range(1,1201):
   f.write(str(r))
   f.write(",")
   f.write(random.choice(enc1))
   f.write("\n")
f.close()

或者使用with在循环外打开文件,然后使用writelines写入数据:

with open("Skins.txt",'w') as f:
     f.writelines("{},{}\n".format(r, random.choice(enc1)) for r in range(1,1201))

相关问题 更多 >