目次
1. 시작하기
Python은 파일 작업에 대해 매우 유연하며, 간단한 코드로 많은 작업을 자동화할 수 있습니다. 이 기사에서는 Python을 사용하여 “파일 이름을 가져오는” 방법을 몇 가지 소개합니다. 특히, 표준 라이브러리인os
모듈과 pathlib
모듈을 중심으로 설명합니다. 이 기사를 읽으면 디렉터리 내 파일을 효율적으로 조작하고, 파일 이름을 가져오거나 필터링하는 스크립트를 만드는 기술을 습득할 수 있을 것입니다.2. Python에서 파일명 가져오기 방법의 기본
먼저, Python에서 파일명을 가져오기 위한 기본적인 방법부터 시작합니다.os.path.basename()
함수를 사용하면 지정한 경로에서 파일명을 가져올 수 있습니다.2.1 os.path.basename()
사용법
os.path.basename()
는 전체 경로에서 파일명만을 가져오는 함수입니다. 아래 예에서는 파일 경로에서 파일명을 추출합니다.import os
file_path = "/user/home/document/file.txt"
file_name = os.path.basename(file_path)
print(file_name) # 결과: "file.txt"
2.2 os.path.dirname()
로 디렉터리명 가져오기
마찬가지로, os.path.dirname()
를 사용하면 파일 경로에서 디렉터리명을 가져올 수 있습니다. 이를 통해 파일명과 디렉터리명을 분리하여 가져올 수 있습니다.dir_name = os.path.dirname(file_path)
print(dir_name) # 결과: "/user/home/document"
3. 디렉터리 내의 모든 파일 이름을 가져오기
디렉터리 내에 있는 모든 파일과 폴더를 리스트 형태로 가져오려면os.listdir()
가 편리합니다. 또한, 서브디렉터리 내의 파일을 재귀적으로 가져오기 위해서는 os.walk()
가 도움이 됩니다.3.1 os.listdir()
를 사용한 파일 이름 가져오기
os.listdir()
를 사용하면 지정한 디렉터리 내의 모든 파일과 폴더를 리스트로 가져올 수 있습니다. 단순한 디렉터리 작업에 최적입니다.import os
dir_path = "/user/home/document"
files = os.listdir(dir_path)
print(files) # 결과: ["file1.txt", "file2.txt", "subfolder"]
3.2 os.walk()
로 재귀적으로 파일 이름을 가져오기
서브디렉터리까지 포함해 파일을 재귀적으로 가져오고 싶을 경우, os.walk()
를 사용하는 것이 가장 효과적입니다. 아래 코드에서는 지정된 디렉터리와 그 서브디렉터리에 존재하는 모든 파일을 목록으로 표시합니다.import os
dir_path = "/user/home/document"
for root, dirs, files in os.walk(dir_path):
for file in files:
print(os.path.join(root, file))
3.3 오류 처리 추가
디렉터리가 존재하지 않거나 접근 권한이 없는 경우 오류가 발생할 가능성이 있습니다. 따라서try-except
를 사용해 예외 처리를 추가하는 것이 권장됩니다.dir_path = "/invalid/path"
try:
files = os.listdir(dir_path)
print(files)
except FileNotFoundError:
print(f"{dir_path}를 찾을 수 없습니다.")
4. 확장자 가져오기 및 변경
파일명을 가져올 때, 확장자 작업도 필요할 경우가 있습니다.os.path.splitext()
를 사용하면, 확장자를 분리하거나 변경할 수 있습니다.4.1 os.path.splitext()
로 확장자 가져오기
os.path.splitext()
는 파일명과 확장자를 나누어 반환하는 함수입니다.import os
file_path = "/user/home/document/file.txt"
file_name, file_ext = os.path.splitext(file_path)
print(file_name) # 결과: "/user/home/document/file"
print(file_ext) # 결과: ".txt"
4.2 확장자 변경하기
확장자를 변경할 때는,os.path.splitext()
로 가져온 파일명에 새로운 확장자를 추가합니다.new_file_path = file_name + ".jpg"
print(new_file_path) # 결과: "/user/home/document/file.jpg"
5. pathlib
모듈을 사용한 파일명 가져오기 응용
Python 3.4 이후에서는 pathlib
모듈이 파일 경로 조작에 매우 편리합니다. pathlib
은 객체 지향 방식으로 파일 경로를 조작할 수 있어, 보다 직관적으로 사용할 수 있습니다.5.1 Path.iterdir()
를 사용한 파일명 가져오기
pathlib.Path()
의 iterdir()
메서드를 사용하면, 지정한 디렉터리 내의 파일명과 폴더명을 가져올 수 있습니다.from pathlib import Path
dir_path = Path("/user/home/document")
for item in dir_path.iterdir():
print(item.name)
5.2 재귀적인 파일 가져오기: rglob()
하위 디렉터리까지 포함해 재귀적으로 파일명을 가져오는 경우에는 rglob()
메서드를 사용합니다. 이는 os.walk()
의 대안으로도 활용할 수 있습니다.for file in dir_path.rglob("*"):
print(file)
6. 파일명 필터링
특정 조건에 맞는 파일명만 가져오고 싶을 경우,glob
모듈이나pathlib
의glob()
메서드를 사용하여 필터링할 수 있습니다.6.1 확장자로 필터링
특정 확장자를 가진 파일만 가져오려면, 와일드카드*
를 사용합니다.from pathlib import Path
dir_path = Path("/user/home/document")
for file in dir_path.glob("*.txt"):
print(file)
이 코드는 지정한 디렉터리 내의 .txt
파일만 가져옵니다.7. 요약
Python을 사용하여 파일 이름을 얻는 방법은 다양하지만, 용도에 맞는 적절한 방법을 선택하는 것이 중요합니다.os
모듈의 기본적인 조작부터, pathlib
의 고급 기능까지 활용하면, 디렉터리 내의 파일을 효율적으로 처리할 수 있습니다. 다음 번에는 파일 작업의 응용으로, 파일 이름 바꾸기와 이동, 삭제에 관한 정보를 제공할 것입니다.