파일을 사용하는 전체적인 방식: 파일 열기 -> 파일 읽기/쓰기 -> 파일 닫기
1. 파일 열기
f = open(filename, mode [, encoding])
filename: 사용하고자 하는 파일 이름
mode: 사용하고자 하는 파일의 사용 목적(모드)
구분(mode) | 텍스트 모드 | 이진 모드 | 방식 |
파일 입력 | r | rb | 읽기(read) |
파일 출력 | w | wb | 쓰기(write) |
a | ab | 추가(append) |
* 텍스트 모드: 일반 텍스트 형태 그대로 사용하는 경우
* 이진 모드: 파일을 바이트 형태로 사용할 경우,
일반 텍스트 파일을 이진 모드로 열게되면 텍스트 글자를 바이트 단위로 사용할 수 있다.
* 인코딩 방식을 지정하는 경우(선택)
f = open("file.txt", "r", encoding="utf-8")
이렇게 만든 스트림을 f 객체에 넣어 이후 파일을 읽거나 쓸 때, 그리고 스트림을 다시 닫을 때 사용할 수 있도록 한다.
2. 파일 읽기/쓰기
- 파일 읽기 (mode: r)
1) 파일 내용 전부 읽기
str = f.read()
파일 내용이 전부 str 변수에 저장된다.
파일의 끝에 도달하면 빈 문자열('')을 반환한다.
2) 원하는 크기만 읽기
str = f.read(size)
size만큼의 내용만 str변수에 저장된다.
3) 파일 한 줄만 읽기
str = f.readline()
빈 문자열의 경우 대게 문자열의 끝에 붙게 되는 개행문자('\n')를 반환하고,
아예 파일의 끝에 도달한 경우 빈 문자열('')을 반환한다.
4) 파일의 모든 줄을 리스트로 읽기
s = list(f) # 또는
s = f.readlines()
파일의 모든 내용이 줄 단위로 리스트에 저장된다.
- 파일 쓰기 (mode: w)
f.write(value)
value 내용이 파일 안에 저장된다. (덮어쓰기 방식으로 저장.)
- 파일 쓰기 (mode: a)
f.write(value)
value 내용이 파일 안에 저장된다. (파일 안에 원래 다른 내용이 있었으면 그 내용 뒤에 덧붙여짐.)
- 파일 객체 위치 반환
f.tell()
파일 객체 위치를 반환한다.
f가 이진 모드로 열린 경우에는 바이트 수를 반환하고, 텍스트 모드로 열린 경우에는 글자수를 반환한다.
seek함수에의해 위치가 변경된 경우 변경된 위치를 반환한다.
- 파일 객체 위치 변경
f.seek(offset, whence) # whence: 0, 1, 2
기준점 whence에 offset을 더한 위치로 커서를 이동한다고 생각하면 된다.
그 위치로 이동시킨 후 원하는 읽기 또는 쓰기 작업을 실행하면 그 위치에서부터 읽거나 쓸 수 있다.
whence가 0이면 파일의 시작위치, 1이면 현재 위치, 2이면 파일의 끝이 기준점이 된다.
whence를 입력하지 않으면 기본으로 0에다가 offset을 더하는 것이 된다.
3. 파일 닫기
f.close()
동적할당에서 사용한 메모리를 꼭 free 시켜주는 것과 같이 파일 스트림 작업에서도 작업 후 꼭 close 시켜주도록 해야 한다.
'Programming > Python' 카테고리의 다른 글
Ubuntu에서 uWSGI - Nginx 로 웹서버 배포하기 (0) | 2021.09.11 |
---|---|
[Python] 프로그램 종료 (0) | 2021.06.12 |
[Python] 자료 구조형 데이터(리스트, 튜플, 딕셔너리, 집합) (0) | 2021.05.17 |