Python 3.1.1中的Shelve模块
我刚开始学习Python,正在看O'Reilly的《学习Python》系列书籍。现在我在一个关于shelve的例子上卡住了,搞不清楚为什么程序不工作。我想创建一些示例数据,然后把它们加载到一个shelve文件里。奇怪的是,当我在IDLE的命令行中输入这些代码时,它能正常工作,但当我把它们写进一个.py文件并尝试运行时,就出错了。以下是我的代码:
from Python_Learning.person import Person, Manager
bob = Person('Bob Smith', 'dev', 60000)
sue = Person('Sue Jones', job = 'designer', pay = 100000)
tom = Manager('Tom Jones', 1000000)
import shelve
db = shelve.open('persondb')
for object in (bob, sue, tom):
db[object.name] = object
db.close()
再说一次,当我在IDLE命令行中运行这段代码时没有问题,但从.py文件运行时却出现了以下错误:
追踪记录(最近的调用在最前面): 文件 "Documents/Python_Learning/shelve.py",第7行,在 import shelve 文件 "Documents/Python_Learning/shelve.py",第9行,在 db = shelve.open('persondb') AttributeError: 'module'对象没有属性'open'
如果有帮助的话,这是我在Snow Leopard上运行的Python版本信息:
Python 3.1.1 (r311:74543, 2009年8月24日,18:44:04) [GCC 4.0.1 (Apple Inc. build 5493)] 在darwin上
谢谢你对新手的帮助!
Will
1 个回答
7
把你的模块改个名字,不要叫 shelve.py
— 你在导入你自己。