Как мариновать объект?

Здесь это код, который у меня есть:

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

8
задан Richard 24 August 2010 в 16:34
поделиться

3 ответа

Не называйте свой файл pickle.py. Он конфликтует с одноименным стандартным библиотечным модулем Python. Итак, ваш import pickle не использует модуль python.

21
ответ дан 5 December 2019 в 06:36
поделиться

Ваш код мне подходит.

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 импортировать из вашего собственного файла вместо основной библиотеки. Переименуйте файл кода.

3
ответ дан 5 December 2019 в 06:36
поделиться

Ваш скрипт называется pickle и поэтому скрывает выбор модуля из стандартной библиотеки. Он импортирует себя и пытается вызвать свою функцию dump (и, конечно же, у нее ее нет).

Обратите внимание, что вам «повезло», что вы не попали в бесконечный цикл импорта (поскольку импорт одного и того же модуля дважды просто создает еще одну ссылку на один и тот же объект модуля в памяти).

1
ответ дан 5 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: