2

我正在尝试了解有关 python 的更多信息并编写了一个简单的脚本,但我无法让 read() 函数工作。我错过了什么?我收到的错误消息是:

回溯(最后一次调用):文件“ex16demo.py”,第 28 行,打印 glist.read() IOError: File not open for reading

I 文件应该打开并分配给 glist 变量。

from sys import argv

script, filename = argv

print "We are creating a new grocery list!"

print "Opening %r..." % filename
glist = open(filename, 'w')

print "Deleting previous content from %r......" % filename
glist.truncate()

print "Add your items now:"
item1 = raw_input("item 1:")
item2 = raw_input("item 2:")
item3 = raw_input("item 3:")

print "Adding your items to the list...."
glist.write(item1)
glist.write("\n")
glist.write(item2)
glist.write("\n")
glist.write(item3)
glist.write("\n")

print "Here are the items in your grocery list:"

print glist.read()

谢谢!

4

2 回答 2

4

该文件已打开以进行写入(请参阅 参考资料open(filename, 'w'))。

关闭文件,打开它进行阅读,然后调用read()

glist.close()

glist = open(filename, 'r')
print glist.read()

或者,您可以在r+不重新打开的情况下以读写模式打开文件(感谢@sberry 的评论)。

另外,考虑使用with上下文管理器而不是手动关闭打开的文件:

with open(filename, 'r+'):

    print "Deleting previous content from %r......" % filename
    glist.truncate()

    ...

    print glist.read()

另见:

于 2013-09-08T19:55:36.087 回答
1

中的“w”glist = open(filename, 'w')表示您正在以“写入”模式打开文件。您将需要close()它并以“读取”模式 ( ) 重新打开它open(filename, 'r')以打印出内容。

于 2013-09-08T19:56:19.837 回答