Python io 모듈을 사용하면 파일 관련 입력 및 출력 작업을 관리할 수 있습니다. IO 모듈을 사용하는 장점은 사용 가능한 클래스 및 함수를 통해 유니코드 데이터에 쓰기 기능을 확장할 수 있다는 것입니다.
Python IO 모듈
Python에서 스트림 및 버퍼 작업을 수행하는 방법은 다양합니다. 여기에서는 이를 증명하기 위해 많은 예제를 보여줄 것입니다. 시작해 봅시다.
Python BytesIO
변수를 사용하는 것처럼 데이터를 바이트로 유지할 수 있습니다. io 모듈의 바이트 IO 작업을 사용할 때 인메모리 버퍼에 데이터를 유지합니다. 다음은 이를 보여주는 샘플 프로그램입니다:
import io
stream_str = io.BytesIO(b"JournalDev Python: \x00\x01")
print(stream_str.getvalue())
이 프로그램의 출력을 확인해 봅시다:
getvalue()
함수는 버퍼에서 값을 가져옵니다.
Python StringIO
StringIO
도 BytesIO
와 매우 유사하게 사용할 수 있습니다. 다음은 샘플 프로그램입니다:
import io
data = io.StringIO()
data.write('JournalDev: ')
print('Python.', file=data)
print(data.getvalue())
data.close()
이 프로그램의 출력을 확인해 봅시다: 버퍼를 사용한 후에는 버퍼를 닫았습니다. 이는 데이터를 메모리에 저장하기 때문에 버퍼 메모리를 절약하는 데 도움이 됩니다. 또한 변수의 IO 스트림을 지정하는 선택적 인수를 사용하여 print 메서드를 사용했는데, 이는 print 문과 완벽하게 호환됩니다.
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())
이 프로그램의 출력을 확인해 봅시다: 이 프로그램을 실행하기 위해서는 현재 디렉토리에 whale.png 이미지가 있어야 합니다.
io.open() 대 os.open()
io.open()
함수는 파일 I/O 작업을 수행하는 선호되는 방법으로, 이는 파일 I/O를 수행하기 위한 고수준 인터페이스로 만들어졌습니다. 이는 OS 수준의 파일 기술자를 객체에 래핑하여 Pythonic한 방식으로 파일에 액세스할 수 있습니다. os.open()
함수는 낮은 수준의 POSIX 시스템 호출을 처리합니다. POSIX 기반 인수를 입력으로 사용하고 열린 파일을 나타내는 파일 기술자를 반환합니다. 파일 객체를 반환하지 않습니다. 반환된 값에는 read()
또는 write()
함수가 없습니다. 전반적으로 io.open()
함수는 os.open()
함수의 래퍼에 불과합니다. 또한 os.open()
함수는 기본 구성을 플래그 및 모드로 설정하며, io.open()
는 이를 수행하지 않고 전달된 값에 따라 달라집니다.
결론
이 수업에서는 Python IO 모듈의 간단한 작업과 BytesIO를 사용하여 Unicode 문자를 관리하는 방법에 대해 공부했습니다. 그러나 파일을 삭제하거나 복사하는 등의 완전한 파일 작업을 찾고 있다면 파이썬 파일 읽기를 읽어보십시오. 참고: API 문서
Source:
https://www.digitalocean.com/community/tutorials/python-io-bytesio-stringio