💡 I/O : Input/Output의 약자로 컴퓨터가 데이터를 입력받고 출력하는 모든 작업을 의미합니다.
Source : https://en.wikiversity.org/wiki/Hardware#/media/File:Computer1.png
- 프로그램 입장에서 들어오는 모든 데이터를 Input, 나가는 모든 데이터를 Output이라고 한다.
- 메인 메모리 입장에서 생각하는 들어오고 나가는 모든 데이터에 대해서 I/O 처리라고 부릅니다. (단, CPU와의 소통은 제외)
- 사용자로부터 키보드로 입력받는 것을
stdin
이라고 하며, 사용자에게 다시 결과를 모니터로 보여주는 것을 stdout
이라고 합니다.
STDIN/OUT
a = input("숫자를 하나 입력하세요 : ")
print(a)
>>> 숫자를 하나 입력하세요 : 5
>>> '5'
- 프로그램은 메인 메모리 상에서 존재하기 때문에, 스토리지로부터 파일을 불러오는 것도 input이고, 프로그램의 결과를 스토리지에 저장하는 것도 output입니다.
- 스토리지와 프로그램 사이의 I/O를
file I/O
라고 합니다.
File I/O
with open("data/a.txt", 'r') as f:
data = f.readlines()
- 파이썬에서는 with open() 함수를 통해서 텍스트 파일을 쉽게 불러올 수 있다.
- ‘r’, ‘w’, ‘a’ 등의 mode를 바꿔서 파일을 다른 옵션으로 열 수 있다. (read, write, append 순)
- 다른 타입의 파일을 열기 위해선 다른 라이브러리들이 필요하다.
- csv, excel : pandas, csv, openpyxl 라이브러리를 사용할 수 있다.
- png, jpg : PIL, opencv 라이브러리를 사용할 수 있다.
pk
, pkl
: pickle 라이브러리를 사용할 수 있다. (파일 타입이 binary라서, ‘rb’를 써야함)
※ I/O가 데이터 처리를 할 때 가장 느린 파트이기 때문에 신경써줘야 한다. (performance bottleneck)
Key Points
- 파이썬에서 키보드로 데이터를 입력하려면 input 함수를 사용해야 합니다.
- 파일로 된 데이터를 읽어오려면 file I/O처리가 필요합니다. 어떤 타입의 데이터를 읽어오느냐에 따라 필요한 라이브러리가 달라집니다.
- file의 사이즈가 크면, file I/O가 데이터 처리에 치명적인 성능 저하를 가져올 수 있습니다.