Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 5, 2009 20:04:15

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

pickle.dump(): 'QString' object has no attribute 'write'

Хочу с помощью pickle сохранить в файл список содержащий вот такие объекты:

class Layer:
def __init__(self, name=u"Слой", type=0, thickness=100, color=QColor(Qt.darkBlue), maskType=0, visibility=True):
self.mask = [] # список полигонов
self.name = name # u"Слой"
self.type = type # 0 - напыление, 1 - травление, 2 - диффузия
self.thickness = thickness # 100
self.color = color # Qt.darkBlue
self.maskType = maskType # 0 - позитивная, 1 - негативная
self.visibility = visibility # True
вылезает следующая ошибка:
Traceback (most recent call last):
File "/home/soifong/workspace/xnano/src/ProjectManager.py", line 24, in saveProject
self.saveProjectAs()
File "/home/soifong/workspace/xnano/src/ProjectManager.py", line 31, in saveProjectAs
self.saveProject()
File "/home/soifong/workspace/xnano/src/ProjectManager.py", line 26, in saveProject
pickle.dump(self.parent.structure, self.filename)
File "/usr/lib/python2.5/pickle.py", line 1362, in dump
Pickler(file, protocol).dump(obj)
File "/usr/lib/python2.5/pickle.py", line 203, in __init__
self.write = file.write
AttributeError: 'QString' object has no attribute 'write'
При чем функция pickle.dumps() без ошибок сериализует его в строку. Непонятно. почему pickle.dump не может точно такую же строку записать в файл. Самому что ли это делать или в чем проблема?

п.с. Или может есть более удобный способ сохранить “проект” в файл, если все необходимые данные находятся в одном списке?



Отредактировано (Авг. 5, 2009 20:24:54)

Офлайн

#2 Авг. 6, 2009 01:56:59

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

pickle.dump(): 'QString' object has no attribute 'write'

pasaranax
pickle.dump(self.parent.structure, self.filename)
Надо передавать не имя файла, а открытый для записи файл.
pickle.dump(self.parent.structure, open(self.filename, 'wb'))



Офлайн

#3 Авг. 7, 2009 02:06:15

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

pickle.dump(): 'QString' object has no attribute 'write'

Спасибо, что-то я об этом сразу не подумал )



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version