我如何挑选一个物体?

时间:2010-08-24 16:34:23

标签: python debugging pickle

这是我的代码:

import pickle 

alist = ['here', 'there']
c = open('config.pck', 'w')

pickle.dump(alist, c)

这是我收到的错误:

Traceback (most recent call last):
  File "C:\pickle.py", line 1, in ?
import pickle
  File "C:\pickle.py", line 6, in ?
pickle.dump(alist, c)
AttributeError: 'module' object has no attribute 'dump'

最近怎么回事?我在windows xp上使用python 2.4

3 个答案:

答案 0 :(得分:21)

请勿调用您的文件pickle.py。它与同名的python标准库模块冲突。所以你的import pickle没有拿起python模块。

答案 1 :(得分:3)

你的代码对我来说很好。

Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>>
>>> alist = ['here', 'there']
>>> c = open('config.pck', 'w')
>>>
>>> pickle.dump(alist, c)
>>>

问题是您的文件名“pickle.py”正在使import pickle语句尝试从您自己的文件而不是主库中导入。重命名您的代码文件。

答案 2 :(得分:1)

您的脚本称为pickle,因此会从标准库中隐藏模块picke。它导入自己并试图调用它的dump函数(当然它没有函数)。

请注意,您很幸运,因为您没有被引入无限导入循环(因为导入相同的模块两次只会在内存中创建对同一模块对象的另一个引用)。