바보 같은 질문이 있습니다. 이미 다른 프로토콜 옵션을 사용하여 이미 cPickled 파일을 다시 pickle (cPickle) 할 수 있으며 매우 큰 파일에 가장 적합한 프로토콜입니다. 도움이나 제안을 부탁드립니다.c 프로토콜 사용 옵션 파일
-1
A
답변
4
은 정말 당신이 파일을 산세 무슨 뜻인지 이해가 안 돼요. 피클 링 된 파일을 unpickle 처리하지 않고 바이너리로 읽은 다음 다시 피클 링 하시겠습니까? 이것은 문제가되어서는 안되지만 좋은 일은 없을 것입니다 ...
피클의 기본 프로토콜 버전은 0, ASCII (pickle docs)입니다. 최신 바이너리 프로토콜은 2로, 파일 크기가 작아집니다. 필자의 경우, 바이너리 픽 셀 출력은 아래의 ASCII 피클 코드와 같이 잼 jpg 그림의 절반에 불과했습니다.
피클 같은 인터페이스를 가지고 있지만 더 안전하다고 생각되는 cerealizer을 생각해보십시오. 그것은 자신의 바이너리 프로토콜을 가지고있는 것으로 보이는데, 파일 크기는 pickle 바이너리만큼 작습니다.
import cerealizer
#import cPickle as cerealizer
def save(data, filename):
f = open(filename,"wb")
cerealizer.dump(data, f, protocol=2)
f.close()
def load(filename):
f = open(filename,"rb")
p = cerealizer.load(f)
f.close()
return(p)
if __name__ == "__main__":
import PIL.Image
import cStringIO as StringIO
stringIO = StringIO.StringIO()
im = PIL.Image.open("picture.jpg")
im.save(stringIO, "JPEG")
stringIO.seek(0)
save(stringIO.read(), "testCerealizerIm.txt")
binaryImageData = load("testCerealizerIm.txt")
stringIO2 = StringIO.StringIO()
stringIO2.write(binaryImageData)
stringIO2.seek(0)
im = PIL.Image.open(stringIO2)
im.show()
2
귀하는이를 언 클램핑하여 재 코드화합니다. 프로토콜 버전은 피클 API의 일부로 선택이 끝난 될 수
관련 문제
- 1. 현실적인 @ 옵션 프로토콜 방법의 예
- 2. 파일 프로토콜
- 3. C++ 전달 옵션 실행 파일
- 4. c & C++ 프로토콜 버퍼
- 5. C#에서 RTMP 또는 RTSP 프로토콜 사용
- 6. 사용 가능한 프로토콜 찾기
- 7. Websocket 프로토콜 사용
- 8. WCF와 UDP 프로토콜 사용
- 9. pycurl PostFields 옵션 사용
- 10. ios 용 브라우저 프로토콜 처리기 옵션
- 11. 옵션 필드가없는 프로토콜 버퍼 : 고정 크기?
- 12. Objective-C에서 프로토콜 버퍼 사용
- 13. firefox 5 및 프로토콜 파일 : //
- 14. 은 - 파일 옵션
- 15. C# 컴파일러 옵션 - 매니페스트 파일 임베드
- 16. 프로토콜 버퍼 사용 경험이 있습니까?
- 17. Java EE에서 프로토콜 버퍼 사용?
- 18. NSNotificationCenter 대 위임 (프로토콜 사용)?
- 19. Web.config에서 net.tcp 프로토콜 사용 가능
- 20. Objective-C 프로토콜/인터페이스?
- 21. 목표 - C 프로토콜
- 22. C# SIP 프로토콜
- 23. C# POP3 프로토콜 솔루션
- 24. 프로토콜 버퍼는 오브젝티브 C
- 25. C# 블루투스 프로토콜 작성
- 26. 목적 C, 프로토콜
- 27. symfony - 작업 - 옵션 사용
- 28. nyroModal 올바른 옵션 사용
- 29. GDB의 tui 옵션 사용
- 30. Doxygen 및 Objective-C 프로토콜