네트워크 소켓을 통해 서로 통신하는 서버 및 클라이언트 프로그램이 있습니다.네트워크 소켓을 통해 전송하기 위해 파이썬에서 scandir.DirEntry를 직렬화하는 방법은 무엇입니까?
내가 원하는 것은 소켓을 통해 scandir.scandir()
에서 얻은 디렉토리 항목 (scandir.DirEntry
)을 보내는 것입니다.
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
방법 :
import scandir, pickle
s = scandir.scandir("D:\\PYTHON")
entry = s.next()
data = pickle.dumps(entry)
는 그러나, 나는 다음과 같은 오류 스택을 얻고있다 :
지금 내가 pickle
및 cPickle
모듈을 사용하고하면 다음 (만 발췌)와 함께 올라와있다 이 오류를 제거 할 수 있습니까?
나는 marshall
또는 JSON
을 사용하는 것에 대해 들어 봤습니다. 업데이트 : JSON
은 개체 내의 모든 데이터를 덤프하지 않습니다.
소켓을 통해 개체를 보내려면 완전히 다른 방법이 있습니까?
미리 도움을 청하십시오.
왜 당신이 소켓을 통해 객체를 전송 하시겠습니까 아니라 관련 데이터를 객체 내에서? –
@SimonBlack : 정확히, 나는 접근 가능한 데이터 만 보내어 부분적으로 알아 냈습니다. 그러나'is_dir()'과 같은 클래스의 메소드의 동작을 에뮬레이션하는 방법은 무엇입니까? 이'is_dir()'메소드의 실제 데이터는 어디에 있습니까? –