지금까지 저희는 프로그램을 작성하고 출력하는 과정을 진행했습니다.
하지만 저희는 지금까지 모든 출력이 cmd화면에 출력을 했잖습니까? 이제 파일을 직접 생성하고 쓰는 코드를 통해 결과 값을 파일에 저장하는 방법을 학습해봅시다.
입,출력 스트림
스트림(Stream)
자료흐름이 물의 흐름과 같다는 뜻으로, 입출력 장치는 매우 다양하기 때문에 프로그램 호환성이 떨어집니다.
입력 스트림 : 동영상을 재생하기 위해 동영상 파일에서 자료를 읽을 때 사용함
출력 스트림 : 사용자가 쓴 글을 파일에 저장할 때는 출력 스트림 사용함
파일 입출력의 필요성
- 프로그램 실행 중에 메모리에 저장된 데이터는 프로그램이 종료되면 사라진다.
- 데이터를 프로그램이 종료된 후에도 계속해서 사용하려면 파일에 저장하고 필요할 때 파일을 읽어서 데이터를 사용할 수 있다
자 이제 파일 입출력에 흐름도의 개념이 잡히셨죠?
그럼 이제 코딩으로 넘어 가봅시다.
파일 입출력은 With문이라는 구문을 통하여 이뤄집니다.
파일 작성
with문
- 파일, 네트워크 연결, 데이터베이스 연결 등 리소스를 사용한 작업이 끝난 후 이를 자동으로 정리(cleanup)합니다.
- 파일을 열고 작업한 후 파일을 자동으로 닫거나, 잠금을 해제하는 등의 처리를 보장 합니다.
- 작업 중 예외가 발생하더라도 자동으로 리소스를 정리하므로, 예외로 인해 리소스가 닫히지 않는 문제를 방지합니다.
- 파일을 OPEN()을 이용하여 열고 작업이 끝나면 CLOSE()를 이용하여 파일을 닫아줘야합니다.
- with문을 사용하면 파일을 알아서 정리해주기 때문에 작업 효율이 향상됩니다.
위 와 같은 구조로 이루어져 있습니다.
구문은 다음과 같이 사용 됩니다.
with open("파일이름.파일확장자","파일 모드",encoding="utf-8") as file:
이제 모든 개념을 학습했습니다.
그럼 간단한 실습을 해봅시다.
실습(안녕하세요 txt파일 만들기)
- file.write("안녕하세요")를 사용하여 파일을 생성해 봅시다.
위 처럼 파일이 생성되고 출력 한 내용이 저장 된 것이 확인이 가능합니다.
(여기서 encoding을 쓴느 이유는 버전과 유니코드와 같은 언어에 차이로 인해 글자가 깨지는 형상을 방지하고자 쓰는 것입니다.)
만약에 문자열을 입력하고자 하신다면, file.writelines()를 사용하시면 됩니다.
이런 식으로도 추가할 수 있습니다.
근데 그러면 미리 입력된 내용만 알 수 있을까요?
아닙니다! 사용자로부터 내용을 입력 받고 사용 할 수 있습니다.
실습(사용자로부터 내용입력 받기)
- 무한 반복문을 with문 내부에 내포하여 작성
- 종료 프로세스 작성
자 작성하는 방법은 모두 다 아시겠죠?

그럼 이제 파일로 만들었습니다. 불러오는 방법도 학습해야 겠죠?
파일 읽기
- read() : 파일의 내용 전체를 문자열로 반환, 메모리 사용량이 높음
- readline() : 파일에서 한 줄을 읽어옴, 메모리 사용량이 가장 적음
- readlines() : 파일의 모든 줄을 읽고, 각각의 줄을 요소로 갖는 리스트를 반환, 메모리 사용량이 보통
- 큰파일 : readline()을 사용하여 한 줄씩 처리
- 작은 파일: read() 또는 readlines()를 사용하여 빠르게 처리
- 파일 쓰기 할때 인코딩을 했다면 똑 같이 인코딩을 해줘야 함
- 내장함수 : enumerate(리스트) - 리스트의 요소들을 튜플형태로 (인덱스, 요소값) 으로 반환
그러 한번 불러와 봅시다.
실습(파일 불러오기)
- 생성된 파일을 읽어오세요 파일 모드 " r "
- 불러온 파일의 텍스트 양쪽공백을 제거해주세요 (strip())
실습((인덱스 ,요소값) 으로불러오기)
- enumerate사용
- print(f"{idx + 1}번째 줄 : {line.strip()}")로 출력
이게 가장 간단한 파일을 쓰고 읽는 방법입니다.
번외)
바이너리 파일
바이너리 파일이란 영상, 이미지, 음성 등이 대부분인 파일로 0과 1로 이루어진 파일입니다.
바이너리 파일을 한번 만들어 봅시다.
인터넷에서 owl.png를 구하신후 같은 폴더에 넣으신후 실행 하시면
바이트 정보와
owl_copy 파일도 생성
등의 파일의 정보를 읽어 옵니다.
오늘은 여기까지 입니다.
오늘은 실습없습니다!! 연습만하시고 휴식하시길 바랍니다!
다음에는 후에 있을 데이터 수집을 위한 파이썬을 위해 웹 기초를 같이 공부해봅시다.
오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

'python 시작하기' 카테고리의 다른 글
Python 웹 자동화 (1) | 2024.12.12 |
---|---|
Python 예외 처리 (0) | 2024.12.11 |
python 모듈 (5) | 2024.12.06 |
python 클래스 추상화 (1) | 2024.12.05 |
python 클래스 상속, 다향성 (0) | 2024.12.04 |