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

문자열의 내용으로 파일 류 객체 (파일과 동일한 오리 유형)를 어떻게 생성합니까?



답변

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')


답변

Python 3.0에서 :

import io

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


답변

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

io.StringIO(u'foo')


답변

파일 류 객체에 바이트가 포함될 것으로 예상되는 경우 문자열을 먼저 바이트로 인코딩 한 다음 대신 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')))


답변

두 가지 좋은 대답. 약간의 트릭을 추가하겠습니다. 실제 파일 객체가 필요한 경우 (일부 메소드는 인터페이스가 아닌 하나를 기대 함) 다음은 어댑터를 만드는 방법입니다.


답변