파이썬으로 개발하다 보면 문자열의 내용을 마치 실제 파일처럼 취급해야 하는 경우가 종종 있습니다. 예를 들어 파일 객체를 인자로 받는 함수에 문자열 데이터를 전달하거나, 파일 입출력 로직을 테스트할 때가 대표적입니다. 이럴 때 StringIO 모듈을 사용하면 문자열을 파일과 동일한 덕 타입(duck type)을 가진 객체로 손쉽게 변환할 수 있습니다.
StringIO 기본 사용법
사용 방법은 매우 간단합니다. 원하는 문자열을 StringIO 생성자에 전달하기만 하면, 해당 문자열을 일반 파일 객체처럼 읽고 쓸 수 있습니다.
>>> from cStringIO import StringIO
>>> f = StringIO('Hello world')
>>> f.read()
'Hello world'
Python 3에서의 사용 방법
Python 3부터는 cStringIO 모듈이 제거되었으므로, 표준 라이브러리인 io 모듈의 StringIO 클래스를 사용해야 합니다. 문법은 거의 동일하며 다음과 같이 작성합니다.
>>> import io
>>> f = io.StringIO('Hello world')
>>> f.read()
'Hello world'
활용 팁과 주의사항
StringIO로 생성한 객체는 read(), write(), seek(), getvalue() 등 일반 파일 객체가 지원하는 대부분의 메서드를 그대로 사용할 수 있어, 단위 테스트나 임시 버퍼 처리에 특히 유용합니다.
다만 한 가지 주의할 점이 있습니다. StringIO는 일반 ASCII로 인코딩할 수 없는 유니코드 문자열은 처리하지 못합니다. 한글이나 이모지 같은 비 ASCII 문자를 다룰 때는 인코딩 방식을 미리 확인하고 사용하는 것이 안전합니다.