파이썬에서 파일에 문자열을 어떻게 래핑합니까?


답변:


121

Python 2.x의 경우 StringIO 모듈을 사용합니다 . 예를 들면 :

>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'

cStringIO (더 빠름)를 사용하지만 일반 ASCII 문자열로 인코딩 할 수없는 유니 코드 문자열은 허용 하지 않습니다 . ( "from cStringIO"를 "from StringIO"로 변경하여 StringIO로 전환 할 수 있습니다.)

Python 3.x의 경우 io모듈을 사용합니다 .

f = io.StringIO('foo')

1
이제 cStringIO를 사용하는 이유가 있습니다. cStringIO는 유니 코드 문자열을 지원하지 않습니다.
Armin Ronacher

6
더 나은 아이디어는 'import cStringIO as StringIO'를 수행하는 것입니다. 이렇게하면 어떤 이유로 든 순수한 파이썬 구현으로 전환해야하는 경우 한 줄만 변경하면됩니다.
John Fouhy

이것은 Python2.7에서도 작동합니다. io.StringIO(u'foo')저는 이것을 사용할 것입니다
guettli

29

Python 3.0에서 :

import io

with io.StringIO() as f:
    f.write('abcdef')
    print('gh', file=f)
    f.seek(0)
    print(f.read())

1
@ABB 수락 된 대답은 이미 그러한 사용법을 보여줍니다. 내 대답은 상호 보완 적입니다. 그것은- with서술과 쓰기, 인쇄, 찾기, 읽기 방법을 보여줍니다 .
jfs

6

이것은 Python2.7 및 Python3.x에서 작동합니다.

io.StringIO(u'foo')

5

파일 류 객체에 바이트가 포함될 것으로 예상되는 경우 문자열을 먼저 바이트로 인코딩 한 다음 대신 BytesIO 객체를 사용할 수 있습니다. Python 3 :

from io import BytesIO

string_repr_of_file = 'header\n byline\n body\n body\n end'
function_that_expects_bytes(BytesIO(bytes(string_repr_of_file,encoding='utf-8')))

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.