파일 열기 open()
file = open("파일경로", "모드")
- 파일경로는 절대경로 또는 상대경로 로 전달해야함
- 절대경로 : 파일의 정확한 위치를 지정 ex) C:/Users/username/Documents/example.txt
- 상대경로 : 현재 작업 디렉토리를 기준으로 경로를 지정 ex) example.txt
- '모드' : 기본값은 'r' (읽기모드), 생략가능
파일모드 종류
- 'r' : 읽기 모드 (파일이 없으면 오류 발생)
- 'w' : 쓰기 모드 (파일이 없으면 새로 생성, 기존 파일 덮어씀)
- 'a' : 추가 모드 (파일 끝에 데이터를 추가)
- 'b' : 바이너리 모드 (이미지, 오디오 파일 등)
- 'x' : 파일이 이미 존재하면 오류 발생 (파일이 없을 때만 생성)
file = open('example.txt', 'r') # 텍스트 파일 읽기 (상대경로)
file = open('C:/Users/username/Documents/example.txt', 'w') # 텍스트 파일 쓰기 (절대경로)
파일 닫기 close()
- 파일을 다 사용한후 반드시 파일을 닫아야한다.
- 파일을 닫아야 제대로 저장되고, 시스템 리소스를 해제할 수 있다.
file = open("example.txt", "r") # 읽기 모드로 파일 열기
# 파일 처리 작업 수행
file.close() # 파일 닫기
자동으로 파일 닫기 ( with )
- with 구문이 끝나면 자동으로 file.close() 가 호출되어 닫히게 된다.
with open('example.txt', 'r') as file:
content = file.read()
print(content)
파일 읽기
- read() : 파일 전체 내용을 읽어 문자열로 반환
- readline() : 한 줄씩 읽어서 문자열로 반환
- readlines() : 파일의 모든 줄을 리스트로 반환
with open("example.txt", "r") as file:
lines = file.readlines()
for line in lines:
print(line.strip()) # 각 줄의 공백을 제거하고 출력
위 코드가 주로 쓰이는 방식
파일 쓰기
- write() : 문자열을 파일에 작성
- writelines() : 여러 줄을 파일에 한 번에 작성 (리스트나 튜플 등)
- 파일을 열때 w (쓰기모드) 또는 a (추가모드) 로 열어야 함
# 파일에 내용 쓰기
file = open('example.txt', 'w')
file.write('Hello, World!') # 문자열 작성
file.close()
# 여러 줄을 파일에 쓰기
lines = ['Hello, World!\n', 'Welcome to Python.\n']
file = open('example.txt', 'w')
file.writelines(lines)
file.close()
예외 처리
파일을 처리하는 동안 오류가 발생할 수 있다.
예외 처리를 통해 파일이 존재하지 않거나, 접근 권한이 없는 경우를 대비해야 한다.
try:
with open("example.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
except IOError:
print("파일을 읽는 중 오류가 발생했습니다.")
열고자하는 파일의 경로를 모를땐?
os 모듈을 활용해 파이썬 코드로 경로를 찾을수 있다.
현재 작업 디렉토리 확인하기 ( os.getcwd )
import os
current_directory = os.getcwd()
print("현재 작업 디렉토리 :", current_directory)
# 현재 작업 디렉토리 : C:/Users/.../.../....
절대 경로 찾기 ( os.path.abspath )
import os
absolute_path = os.path.abspath('example.txt')
print("파일의 절대 경로 :", absolute_path)
# 파일의 정대 경로 : C:/Users/.../.../example.txt
TroubleShooting - encoding
파일을 열려고하는데
UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 0: illegal multibyte sequence
이런 에러가 나왔다.
Windows 환경에서 한글을 지원하는 인코딩 방식으로 주로 사용하는것이 cp949 라고 하는데
주피터에서도 파일을 open 하니
encoding='cp949' 로 연것을 볼수있다.
하지만 메모장파일을 저장하려고하면
UTF-8 로 인코딩되기 때문에 서로 맞지않아서 오류가 날 수도 있는것이다.
이럴땐
f = open("prac1.txt", "r", encoding='UTF-8')
이런식으로 인코딩방식도 넣어주면된다.
'Python > Python 기초' 카테고리의 다른 글
[Python] 데코레이터( @ ), 컨텍스트 매니저 ( with ) (2) | 2024.12.02 |
---|---|
[Python] 이터레이터( Iterator ), 제너레이터( Generator ) (0) | 2024.12.02 |
[Python] 클래스 ( class ) (7) | 2024.12.01 |
[Python] 예외 처리 ( try, except, finally ), 에러 타입 (1) | 2024.12.01 |
[Python] 함수 (0) | 2024.12.01 |