У меня есть серверные и клиентские программы, которые общаются друг с другом через сетевой сокет.
Я хочу отправить запись каталога (scandir.DirEntry
), полученную от scandir.scandir()
, через сокет.
На данный момент я использую модули pickle
и cPickle
и придумал следующее (только отрывок):
import scandir, pickle
s = scandir.scandir("D:\\PYTHON")
entry = s.next()
data = pickle.dumps(entry)
Однако я получаю следующий стек ошибок:
File "untitled.py", line 5, in <module>
data = pickle.dumps(item)
File "C:\Python27\Lib\pickle.py", line 1374, in dumps
Pickler(file, protocol).dump(obj)
File "C:\Python27\Lib\pickle.py", line 224, in dump
self.save(obj)
File "C:\Python27\Lib\pickle.py", line 306, in save
rv = reduce(self.proto)
File "C:\Python27\Lib\copy_reg.py", line 70, in _reduce_ex
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle DirEntry objects
Как я могу избавиться от этой ошибки?
Я слышал об использовании marshall
или JSON
. ОБНОВЛЕНИЕ: JSON
не выгружает все данные внутри объекта.
Есть ли совершенно другой способ отправить объект через сокет?
Заранее благодарю за любую помощь.
is_dir()
? Где фактические данные для этогоis_dir()
метода? - person   schedule 29.09.2016