이번 포스팅에서는 파이썬의 텍스트 파일 입출력에 대하여 공부를 해보고자 한다.
입출력(IO)
프로그램이 외부 파일에 데이터를 쓰거나 읽는 작업을 입출력(IO)라고 한다.
텍스트 파일 입출력
파일 열기 – open( )
open 함수는 연결된 파일과 입출력 메소드를 제공하는 객체(Stream)를 리턴한다.
open 함수의 기본구조
텍스트 파일일 경우 인코딩 방식이 None이면 os 기본 encoding방식을 따른다.
open(file, mode=‘r’, encoding=None) 함수 주요 매개변수
연결할 파일의 경로, 입출력 모드(목적, 데이터 종류), 인코딩 방식
예제
순서 1. 출력할 문자열을 생성한다.
순서 2. 출력 대상 파일 경로를 지정한다. (현재 작업 디렉터리/my_text.txt)
순서 3. open 함수로 파일을 연결한다.
txt = """안녕하세요.
Hello World.
123456789"""
save_path = "my_text.txt"
fw = open(save_path, 'wt', encoding='utf-8')
파일 쓰기(출력) 메소드
write(문자열)
연결된 파일에 문자열을 출력한다.
writelines(문자열을 가진 컬렉션)
리스트, 튜플, 집합이 원소로 가진 문자열들을 한 번에 출력한다.
원소에 문자열 이외의 타입의 값이 있을 경우 TypeError 발생한다.
예제
순서 1. open 함수로 파일을 연결한다. (wt - 쓰기 모드)
순서 2. txt값을 my_text.txt 파일에 출력한다.
순서 3. 입력값을 my_text.txt 파일에 출력한다.
fw = open(save_path, 'wt', encoding='utf-8')
fw.write(txt)
fw.write("안녕")
[실행결과]
파일 읽기(입력) 메소드
read( ) : 문자열(text mode), bytes(binary mode)
연결된 파일의 내용을 한 번에 모두 읽어 들인다.
readline( ) : 문자열
한 줄만 읽는다.
만약 읽은 라인이 없으면 None을 리턴한다.
readlines( ) : 리스트
한 번에 다 읽은 뒤 각각의 라인을 리스트에 원소로 담아 반환한다.
for문을 이용한 라인 단위 읽기
file = open(‘a.txt’, ‘r’)
for line in file:
print(line)
예제
순서 1. open 함수로 파일을 연결한다. (rt - 읽기 모드)
순서 2. read 함수로 파일 전체를 한 번에 읽는다.
fi = open('my_text.txt', 'rt')
read_text = fi.read()
print(read_text)
[실행결과]
안녕하세요.
Hello World.
123456789
close (연결 닫기) 함수를 사용하여 파일 연결을 끊으면 IO작업을 할 수 없다.
with block (with statement)
파일과 입출력 작업이 다 끝나면 반드시 연결을 닫아야 한다.
매번 닫는 작업을 하는 것이 번거롭고 실수로 안 닫을 경우 문제가 생길 수 있다.
with block를 사용하면 block을 벗어날 경우 자동으로 연결을 닫아 준다.
with block의 기본 구조
with open(파일명, ..) as 변수:
변수를 이용한 입출력 작업
'Back-End > Python' 카테고리의 다른 글
[Python] 내장함수(Built-In Function) (4) | 2022.10.02 |
---|---|
[Python] Pickle을 이용한 객체 입출력 (0) | 2022.10.02 |
[Python] 예외(Exception) 클래스 정의 (0) | 2022.09.30 |
[Python] try, except 문 (2) | 2022.09.30 |
[Python] 예외(Exception)와 예외 처리(Exception Handling) (2) | 2022.09.30 |