Найти - Пользователи
Полная версия: pickle.dump(): 'QString' object has no attribute 'write'
Начало » Python для новичков » pickle.dump(): 'QString' object has no attribute 'write'
1
pasaranax
Хочу с помощью 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 не может точно такую же строку записать в файл. Самому что ли это делать или в чем проблема?

п.с. Или может есть более удобный способ сохранить “проект” в файл, если все необходимые данные находятся в одном списке?
ZZZ
pasaranax
pickle.dump(self.parent.structure, self.filename)
Надо передавать не имя файла, а открытый для записи файл.
pickle.dump(self.parent.structure, open(self.filename, 'wb'))
pasaranax
Спасибо, что-то я об этом сразу не подумал )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB