Здесь это код, который у меня есть:
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'
Что происходит? Я использую python 2.4 в windows xp
Не называйте свой файл pickle.py. Он конфликтует с одноименным стандартным библиотечным модулем Python. Итак, ваш import pickle
не использует модуль python.
Ваш код мне подходит.
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
импортировать из вашего собственного файла вместо основной библиотеки. Переименуйте файл кода.
Ваш скрипт называется pickle и поэтому скрывает выбор модуля из стандартной библиотеки. Он импортирует себя и пытается вызвать свою функцию dump
(и, конечно же, у нее ее нет).
Обратите внимание, что вам «повезло», что вы не попали в бесконечный цикл импорта (поскольку импорт одного и того же модуля дважды просто создает еще одну ссылку на один и тот же объект модуля в памяти).