Python 3.1.1中的Shelve模块

2 投票
1 回答
2394 浏览
提问于 2025-04-16 21:50

我刚开始学习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 — 你在导入你自己。

撰写回答