ProgramingTip

대신에 바이트로 작동하는 StringIO 대체?

bestdevel 2020. 11. 27. 21:04
반응형

대신에 바이트로 작동하는 StringIO 대체?


대신 문자열 StringIO작동하는 파이썬 클래스를 대체 할 수 bytes있습니까?

Python 2.7 이상에서는 운이 좋지 않습니다.


시도해 시도 .io.BytesIO

다른 사람들 지적했듯이 실제로 StringIO2.7에서 사용할 수 있지만 BytesIO순방향 호환성을 위해 좋은 선택입니다.


Python 2.6 / 2.7에서 io 모듈은 Python 3.X와의 사용을 위해 사용됩니다. 문서에서 :

버전 2.6의 새로운 기능.

io 모듈은 스트림 처리를위한 Python 인터페이스를 제공합니다. Python 2.x에서는 내장 파일 객체의 대안으로 제안 Python 3.x에서는 파일 스트림에 액세스하기위한 기본 인터페이스입니다.

참고이 모듈은 주로 Python 3.x 용으로 설계되었는데 문서에서 "bytes"의 모든 사용은 str 유형 (바이트가 임)을 참조하고 "텍스트"의 모든 사용을 참조한다는 점을 알아야합니다. 유니 코드 유형을 참조하십시오. 또한이 두 유형은 io API에서 상호 교환 할 수 없습니다.

3.X 이전의 Python 버전에서 StringIO

모듈에는 io.StringIO이전 버전의 Python에서 사용할 수 있는 것과 달리 기존 버전의 StringIO가 포함되어 있습니다 .

>>> import StringIO
>>> s=StringIO.StringIO()
>>> s.write('hello')
>>> s.getvalue()
'hello'
>>> import io
>>> s=io.StringIO()
>>> s.write('hello')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: string argument expected, got 'str'
>>> s.write(u'hello')
5L
>>> s.getvalue()
u'hello'

" 결제하지 않을 수 없습니다. 바이너리 데이터 처리에 StringIO를 사용하는데 Python 2.7 이상에서는 운이 좋지 않습니다 .

사실이 아니기 때문에 분명하지 않습니다.

2.6 또는 이전 버전에서 작동하는 코드가있는 경우 2.7에서 작동합니다 . (Windows 명령 프롬프트 창은 열 80 및 모두에서 줄 바꿈) :

C:\Users\John>\python26\python -c"import sys,StringIO;s=StringIO.StringIO();s.wr
ite('hello\n');print repr(s.getvalue()), sys.version"
'hello\n' 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]

C:\Users\John>\python27\python -c"import sys,StringIO;s=StringIO.StringIO();s.wr
ite('hello\n');print repr(s.getvalue()), sys.version"
'hello\n' 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]

2.7 및 3.x에서 실행되는 코드를 작성해야하는 경우 모듈 BytesIO클래스를 사용하십시오 io.

2.7, 2.6, ... 및 3.x를 지원하는 단일 코드베이스가 필요하거나 원하는 경우 조금 더 열심히 작업해야합니다. 6 개의 모듈을 사용하면 많은 도움이 될 것입니다.

참고 URL : https://stackoverflow.com/questions/6479100/stringio-replacement-that-works-with-bytes-instead-of-strings

반응형