Python ValueError:已关闭文件的 I/O 操作。示例教程不起作用

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/28528255/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 03:23:22  来源:igfitidea点击:

Python ValueError: I/O operation on closed file. sample tutorial not working

python

提问by Riaz Ladhani

I am following a tutorial to learn to read and write to a file. I am getting the following error. I do not understand why.

我正在按照教程学习读写文件。我收到以下错误。我不理解为什么。

C:\Python27\python.exe "C:/Automation/Python/Write to files/test3.py"
Traceback (most recent call last):
  File "C:/Automation/Python/Write to files/test3.py", line 8, in <module>
    f.read('newfile.txt', 'r')
ValueError: I/O operation on closed file

My code is

我的代码是

f = open("newfile.txt", "w")
f.write("hello world\n")
f.write("Another line\n")
f.close()

f.read('newfile.txt', 'r')
print f.read()

I have tried to put f.closeat the bottom of the code but I still get the same error.

我试图放在f.close代码的底部,但我仍然遇到同样的错误。

The write part works if I comment out the f.read. It is failing on the f.readpart.

如果我注释掉f.read. 它在这方面失败了f.read

采纳答案by Bhargav Rao

The line after f.close()that is f.read('newfile.txt', 'r')should be f = open('newfile.txt', 'r').

后该生产线f.close()f.read('newfile.txt', 'r')应该f = open('newfile.txt', 'r')

That is

那是

f = open('newfile.txt', 'r')
print f.read()
f.close()

After which you need to add f.close()again.

之后您需要f.close()再次添加。

Small Note

小笔记

As in Python, the default value for 2nd arg of openis r, you can simple do open('newfile.txt')

在 Python 中,第二个参数的默认值openr,你可以简单地做open('newfile.txt')

回答by paul100

As illustrated above when you closed the file you need to open your file so that you can read it

如上图所示,当您关闭文件时,您需要打开文件才能阅读它

f = open('newfile.txt', 'r')
print f.read()
f.close()

回答by Rishabh

You can't perform I/O operation on file_obj after closing it i.e.

关闭 file_obj 后不能对它执行 I/O 操作,即

file_obj.close()

So if you want to open the same file do:

因此,如果您想打开相同的文件,请执行以下操作:

if(file_obj.closed):
   file_obj = open(file_obj.name, file_obj.mode)

print (file.obj.read())
file_obj.close()