我正在尝试了解有关python的更多信息并编写了一个简单的脚本,但我无法使read()函数正常工作。我错过了什么?我得到的错误信息是:
追踪(最近一次通话): 文件“ex16demo.py”,第28行,in print glist.read() IOError:文件未打开以供阅读
我的文件应该打开并分配给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()
谢谢!
答案 0 :(得分: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()
另见:
答案 1 :(得分:1)
' w'在glist = open(filename, 'w')
中,表示您在'写'中打开文件模式。您需要close()
并重新打开它并阅读'模式(open(filename, 'r')
)打印出内容。