파이썬에서 파일 경로를 다룰 때는 os 모듈과 pathlib 모듈을 주로 사용합니다. 이들 모듈은 운영체제에 독립적으로 경로를 관리하며, 파일 및 디렉터리의 작업을 쉽게 수행할 수 있도록 다양한 함수와 메서드를 제공합니다.
1. os 모듈을 사용한 경로 다루기
os.path 하위 모듈을 사용하면 파일 경로 관련 작업을 수행할 수 있습니다.
🔹 파일 경로 결합: os.path.join()
import os
# 폴더 경로와 파일명을 결합하여 경로 생성
folder_path = "/home/user/documents"
file_name = "example.txt"
full_path = os.path.join(folder_path, file_name)
print(full_path) # 결과: /home/user/documents/example.txt
설명: os.path.join()은 폴더 경로와 파일명을 결합하여 전체 경로를 생성하며, 운영체제에 맞는 경로 구분자(/ 또는 \\\\)를 자동으로 사용합니다.
🔹 파일 및 디렉터리 존재 여부 확인: os.path.exists()
file_path = "/home/user/documents/example.txt"
if os.path.exists(file_path):
print("파일 또는 디렉터리가 존재합니다.")
else:
print("존재하지 않습니다.")
설명: os.path.exists()는 경로에 해당하는 파일 또는 디렉터리가 존재하는지 확인하고, 결과를 True 또는 False로 반환합니다.
🔹 파일과 디렉터리 구분: os.path.isfile() / os.path.isdir()
# 파일 확인
print(os.path.isfile(file_path)) # 파일일 경우 True
# 디렉터리 확인
print(os.path.isdir(file_path)) # 디렉터리일 경우 True
설명: os.path.isfile()은 해당 경로가 파일인지 확인하고, os.path.isdir()은 디렉터리인지 확인합니다.
🔹 파일명과 확장자 분리: os.path.splitext()
file_path = "/home/user/documents/example.txt"
file_name, file_extension = os.path.splitext(file_path)
print(file_name) # 결과: /home/user/documents/example
print(file_extension) # 결과: .txt
설명: os.path.splitext()는 파일 경로에서 파일명과 확장자를 분리하여 반환합니다.
2. pathlib 모듈을 사용한 경로 다루기 (Python 3.4+)
pathlib 모듈은 객체 지향 방식을 사용하여 파일 경로를 쉽게 관리할 수 있는 기능을 제공합니다. 파이썬 3.4 이후 버전에서 사용할 수 있습니다.
🔹 Path 객체 생성
from pathlib import Path
# 경로 객체 생성
path = Path("/home/user/documents/example.txt")
print(path)
설명: Path 객체는 파일 경로를 쉽게 다룰 수 있는 많은 메서드와 속성을 포함합니다.
🔹 파일 경로 결합
/ 연산자를 사용하여 경로를 결합할 수 있습니다.
from pathlib import Path
folder_path = Path("/home/user/documents")
file_name = "example.txt"
full_path = folder_path / file_name
print(full_path) # 결과: /home/user/documents/example.txt
설명: Path 객체는 / 연산자를 사용해 직관적으로 파일 경로를 결합할 수 있습니다.
🔹 파일 및 디렉터리 존재 여부 확인
# 파일 존재 확인
if full_path.exists():
print("파일 또는 디렉터리가 존재합니다.")
else:
print("존재하지 않습니다.")
설명: exists() 메서드는 파일 또는 디렉터리의 존재 여부를 확인합니다.
🔹 파일과 디렉터리 구분
print(full_path.is_file()) # 파일일 경우 True
print(full_path.is_dir()) # 디렉터리일 경우 True
설명: is_file()은 파일인지 확인하고, is_dir()은 디렉터리인지 확인합니다.
🔹 파일명과 확장자 추출
print(full_path.stem) # 결과: example
print(full_path.suffix) # 결과: .txt
print(full_path.name) # 결과: example.txt
설명: stem은 파일명만, suffix는 확장자만, name은 전체 파일명을 반환합니다.
3. 디렉터리 및 파일 생성과 삭제
🔹 디렉터리 생성: mkdir()
mkdir() 메서드는 새로운 디렉터리를 생성하며, parents=True 옵션을 사용하면 상위 폴더도 함께 생성할 수 있습니다.
# pathlib 사용 예제
from pathlib import Path
new_folder = Path("/home/user/new_folder")
new_folder.mkdir(parents=True, exist_ok=True)
설명: mkdir(parents=True, exist_ok=True)는 상위 폴더가 없어도 생성하며, 이미 디렉터리가 있으면 오류 없이 넘어갑니다.
🔹 파일 생성과 삭제
- 파일 생성: Path.touch()
- 파일 삭제: Path.unlink()
# 파일 생성
file_path = Path("/home/user/new_folder/new_file.txt")
file_path.touch()
# 파일 삭제
file_path.unlink()
설명: touch() 메서드는 새 파일을 생성하며, unlink()는 파일을 삭제합니다.
4. 파일 경로 정보 가져오기
🔹 부모 디렉터리와 최상위 디렉터리
print(full_path.parent) # 상위 디렉터리 경로
print(full_path.parents[1]) # 두 단계 상위 디렉터리
설명: parent는 상위 폴더 경로를 반환하며, parents는 단계별 상위 폴더에 접근할 수 있는 리스트를 반환합니다.
🔹 경로 절대 경로로 변환: resolve()
상대 경로를 절대 경로로 변환하려면 resolve() 메서드를 사용합니다.
relative_path = Path("example.txt")
absolute_path = relative_path.resolve()
print(absolute_path)
설명: resolve()는 경로를 절대 경로로 변환하여 반환합니다.
5. 디렉터리 내 파일 목록 확인
🔹 특정 폴더 내 파일 목록 가져오기: glob()와 rglob()
- glob(): 현재 디렉터리에서 패턴과 일치하는 파일을 찾습니다.
- rglob(): 하위 디렉터리까지 모든 파일을 찾습니다.
# 모든 .txt 파일 찾기 (현재 디렉터리)
for txt_file in Path("/home/user/documents").glob("*.txt"):
print(txt_file)
# 모든 하위 폴더 포함하여 .txt 파일 찾기
for txt_file in Path("/home/user/documents").rglob("*.txt"):
print(txt_file)
설명: glob("*.txt")는 현재 디렉터리에서 모든 .txt 파일을 찾고, rglob("*.txt")는 하위 디렉터리까지 모든 .txt 파일을 찾습니다.
요약
- os와 pathlib는 파일 경로를 다룰 때 사용되며, pathlib는 객체 지향적이고 직관적인 방식으로 파일 경로를 관리할 수 있습니다.
- 경로 결합, 파일 및 디렉터리 존재 여부 확인, 파일명과 확장자 분리 등 다양한 경로 작업을 쉽게 수행할 수 있습니다.
- mkdir(), touch(), unlink() 메서드를 통해 디렉터리 생성 및 파일 생성과 삭제가 가능합니다.
- glob()와 rglob()는 특정 패턴을 가진 파일을 검색할 때 유용하게 사용됩니다.
이렇게 파이썬에서 제공하는 파일 경로 관련 도구들을 활용하면 운영체제에 구애받지 않고 파일 경로를 다루는 코드를 작성할 수 있습니다.
'파이썬 Python' 카테고리의 다른 글
파이썬 Python 집합(Set) 사용법 (1) | 2024.11.27 |
---|---|
파이썬 Python 튜플(Tuple) 사용법 (0) | 2024.11.27 |
파이썬(Python) JSON 처리 (0) | 2024.11.26 |
파이썬 Python 날짜와 시간 다루기 (0) | 2024.11.26 |
파이썬 Python 제너레이터와 이터레이터 사용하기 (0) | 2024.11.23 |
파이썬 Python 데코레이터 활용하기 (0) | 2024.11.21 |
파이썬 Python 문자열 다루기 (0) | 2024.11.21 |
파이썬 Python 패키지 관리자 (pip) (0) | 2024.11.18 |