웹사이트 검색

파이썬 io - BytesIO, StringIO


Python io 모듈을 사용하면 파일 관련 입력 및 출력 작업을 관리할 수 있습니다. IO 모듈 사용의 이점은 사용 가능한 클래스와 함수를 통해 유니코드 데이터에 쓸 수 있도록 기능을 확장할 수 있다는 것입니다.

파이썬 IO 모듈

io 모듈을 사용하여 Python에서 스트림 및 버퍼 작업을 수행하는 방법에는 여러 가지가 있습니다. 우리는 요점을 증명하기 위해 여기에서 많은 예를 보여줄 것입니다. 시작하자.

파이썬 바이트IO

변수로 수행하는 것과 마찬가지로 데이터는 io 모듈의 Byte IO 작업을 사용할 때 메모리 내 버퍼에 바이트로 보관할 수 있습니다. 다음은 이것을 보여주는 샘플 프로그램입니다.

import io

stream_str = io.BytesIO(b"JournalDev Python: \x00\x01")
print(stream_str.getvalue())

파이썬 StringIO

StringIO도 사용할 수 있으며 BytesIO와 매우 유사합니다. 다음은 샘플 프로그램입니다.

import io

data = io.StringIO()
data.write('JournalDev: ')
print('Python.', file=data)

print(data.getvalue())

data.close()

StringIO를 사용하여 읽기

StringIO 버퍼에 일부 데이터를 쓰면 읽을 수도 있습니다. 코드 스니펫을 살펴보겠습니다.

import io

input = io.StringIO('This goes into the read buffer.')
print(input.read())

StringIO를 사용하여 파일 읽기

파일을 읽고 네트워크를 통해 바이트로 스트리밍하는 것도 가능합니다. io 모듈은 이미지와 같은 미디어 파일을 바이트로 변환하는 데 사용할 수 있습니다. 다음은 샘플 프로그램입니다.

import io

file = io.open("whale.png", "rb", buffering = 0)
print(file.read())

io.open() 대 os.open()

io.open() 함수는 파일 I/O를 수행하기 위한 고수준 인터페이스로 만들어졌기 때문에 I/O 작업을 수행하는 데 훨씬 선호되는 방법입니다. Python 방식으로 파일에 액세스하는 데 사용할 수 있는 개체에 OS 수준 파일 설명자를 래핑합니다. os.open() 함수는 하위 수준 POSIX 시스템 호출을 처리합니다. 입력 POSIX 기반 인수를 사용하고 열린 파일을 나타내는 파일 설명자를 반환합니다. 파일 객체를 반환하지 않습니다. 반환된 값에는 read() 또는 write() 기능이 없습니다. 전반적으로 io.open() 함수는 os.open() 함수에 대한 래퍼일 뿐입니다. os.open() 함수는 플래그 및 모드와 같은 기본 구성도 설정하지만 io.open()은 이를 설정하지 않고 전달된 값에 따라 달라집니다.

결론

이번 강의에서는 파이썬 IO 모듈의 간단한 동작과 BytesIO로 유니코드 문자를 관리하는 방법에 대해 공부했습니다. 그러나 파일 삭제 및 복사와 같은 완전한 파일 작업을 찾고 있다면 API 문서를 읽으십시오.