1단계 : 9. 함수와 모듈 (feat. 파일 경로와 모드 이해)
Python에서 파일 작업을 수행할 때 파일 경로와 파일 모드를 올바르게 이해하는 것이 중요합니다. 파일 경로는 파일의 위치를 지정하며, 파일 모드는 파일을 읽거나 쓰기 위해 열 때 수행할 작업 방식을 정의합니다. 이 장에서는 파일 경로의 종류와 사용법, 파일 모드의 종류와 특징을 상세히 설명합니다.
1. 파일 경로 이해
파일 경로는 파일이 저장된 위치를 지정하는 문자열입니다. Python에서는 절대 경로와 상대 경로를 사용하여 파일을 지정할 수 있습니다.
㉮ 절대 경로
절대 경로(Absolute Path)는 파일의 전체 경로를 지정합니다.
운영 체제에 따라 경로 표기법이 다릅니다:
• Windows: C:\Users\username\Documents\example.txt
• Mac/Linux: /home/username/Documents/example.txt
예제
file = open("C:\\Users\\username\\Documents\\example.txt", "r")
content = file.read()
print(content)
file.close()
㉯ 상대 경로
상대 경로(Relative Path)는 현재 작업 디렉터리를 기준으로 파일의 위치를 지정합니다.
표기 | 설명 |
./example.txt | 현재 디렉터리의 example.txt 파일. |
../example.txt | 상위 디렉터리의 example.txt 파일. |
예제
file = open("./example.txt", "r") # 현재 디렉터리에 있는 파일 읽기
content = file.read()
print(content)
file.close()
㉰ 경로 확인하기
os 모듈을 사용하여 현재 작업 디렉터리를 확인하거나 경로를 조작할 수 있습니다.
현재 작업 디렉터리 확인
import os
current_dir = os.getcwd()
print(f"현재 작업 디렉터리: {current_dir}")
2. 파일 모드 이해
파일 작업 시 open() 함수의 모드(mode)는 파일을 읽기, 쓰기, 추가 또는 새로 만들지 여부를 결정합니다.
㉮ 주요 파일 모드
모드 | 설명 | 작업 |
"r" | 읽기 모드 (기본값). 파일을 읽기 전용으로 엽니다. | 파일이 없으면 오류 발생 |
"w" | 쓰기 모드. 파일을 새로 생성하거나 덮어씁니다. | 기존 파일 내용 삭제 |
"a" | 추가 모드. 파일 끝에 내용을 추가합니다. | 파일이 없으면 새로 생성 |
"x" | 새 파일 생성 모드. 파일을 새로 생성합니다. | 파일이 이미 존재하면 오류 발생 |
"r+" | 읽기 및 쓰기 모드. 파일을 읽고 쓸 수 있습니다. | 파일이 없으면 오류 발생. |
"w+" | 쓰기 및 읽기 모드. 파일을 새로 생성하거나 덮어 씁니다. | 기존 파일 내용 삭제 |
㉯ 텍스트 모드와 바이너리 모드
파일은 텍스트 모드(기본값)와 바이너리 모드로 열 수 있습니다.
접미사 | 설명 | 예제 |
"t" | 텍스트 모드 (기본값). 문자열로 처리 | "rt" , "wt" |
"b" | 바이너리 모드. 바이트 데이터 처리 | "rb" , "wb" |
3. 파일 경로와 모드 활용 예제
㉮ 절대 경로로 파일 읽기
file = open("C:\\Users\\username\\Documents\\example.txt", "r")
content = file.read()
print(content)
file.close()
㉯ 상대 경로로 파일 쓰기
file = open("./example.txt", "w") # 현재 디렉터리
file.write("Python 파일 쓰기 연습.")
file.close()
㉰ 추가 모드로 파일 수정
file = open("example.txt", "a") # 기존 파일 내용 유지, 추가 모드
file.write("\n새로운 줄 추가.")
file.close()
㉱ 새 파일 생성
file = open("new_file.txt", "x") # 파일이 이미 있으면 오류 발생
file.write("새 파일 생성!")
file.close()
㉲ 바이너리 모드로 이미지 읽기
with open("image.jpg", "rb") as file:
data = file.read()
print(f"이미지 크기: {len(data)} 바이트")
4. 모드 선택 시 주의사항
㉮ 파일 덮어쓰기 주의 ("w", "w+"):
• 기존 파일 내용이 삭제되므로, 중요한 파일에는 신중히 사용합니다.
㉯ 파일 없을 때 오류 처리:
• "r" 모드는 파일이 없을 경우 오류가 발생하므로 사전에 존재 여부를 확인합니다.
㉰ 경로 구분자:
• Windows에서는 \\를 사용하거나, os.path.join()을 활용하여 플랫폼 독립적인 코드를 작성합니다.
import os
path = os.path.join("folder", "file.txt")
㉱ 작업 디렉터리 변경:
• 작업 디렉터리를 변경하려면 os.chdir()를 사용할 수 있습니다.
os.chdir("C:\\Users\\username\\Documents")
5. 실용적인 활용
㉮ 사용자 파일 입력 처리
filename = input("파일 이름을 입력하세요: ")
try:
with open(filename, "r") as file:
content = file.read()
print(content)
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
㉯ 다중 파일 쓰기
files = ["file1.txt", "file2.txt", "file3.txt"]
for filename in files:
with open(filename, "w") as file:
file.write(f"{filename}의 내용입니다.")
6. 요약
파일 작업에서 파일 경로와 모드를 올바르게 이해하는 것은 데이터의 안정성과 작업의 효율성을 높이는 데 필수적입니다. 경로는 파일의 위치를 지정하며, 모드는 파일 작업의 유형(읽기, 쓰기, 추가 등)을 결정합니다.
핵심 정리
㉮ 파일 경로:
• 절대 경로와 상대 경로를 지원.
• os 모듈로 경로 조작 가능.
㉯ 파일 모드:
• 읽기("r"), 쓰기("w"), 추가("a"), 새 파일 생성("x") 등 다양한 작업 지원.
• 텍스트 모드("t")와 바이너리 모드("b") 선택 가능.
㉰ 활용:
• 절대 경로는 파일의 고정된 위치 지정.
• 상대 경로는 유연한 작업 환경 제공.