[Python] 파이썬의 바이너리 버퍼


Answers

당신이 StringIO 유니 코드 데이터를 넣으려고하지 않고 cStringIO 를 사용하지 않도록 조심하면 괜찮을 것입니다.

StringIO 문서에 따르면 유니 코드 또는 8 비트를 유지하는 한 모든 것이 예상대로 작동합니다. 아마, 누군가 ZipFile이하지 않는 f.write(u"asdf") 할 때 StringIO 는 특별한 것을합니다. 어쨌든;

import zipfile
import StringIO

s = StringIO.StringIO()
z = zipfile.ZipFile(s, "w")
z.write("test.txt")
z.close()
f = file("x.zip", "w")
f.write(s.getvalue())
s.close()
f.close()

예상대로 작동하며 결과 아카이브의 파일과 원본 파일간에 차이가 없습니다.

이 접근법이 작동하지 않는 특별한 경우를 알고 있다면, 나는 그것에 대해 듣고 싶어 할 것입니다. :)

Question

Python에서는 문자 데이터 용 파일 형 버퍼에 StringIO 를 사용할 수 있습니다. 메모리 매핑 된 파일은 기본적으로 이진 데이터에 대해 비슷한 작업을 수행하지만 기본으로 사용되는 파일이 필요합니다. 파이썬에는 바이너리 데이터 용으로 설계된 파일 객체가 있으며 메모리는 Java의 ByteArrayOutputStream 과 동일합니다.

내가 가진 유스 케이스는 메모리에 ZIP 파일을 만들고 ZipFile 에 파일과 같은 객체가 필요하다는 것입니다.