2023년 6월 업데이트

 

안녕하세요. SQLER의 코난 김대우입니다. 

이번 강좌에서는, Python 중급 강좌 - 6. 파일시스템(File system) 관리를 진행토록 하겠습니다.

 

SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록

 

코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.

예를 들어, 6_filesystem.py를 생성하고 코드를 실행합니다.

 

 

 

TL;DR

pathlib 모듈은 일반적인 파일과 디렉토리에 액세스하기 위한 다양한 파일시스템 명령과 클래스를 제공합니다. 현재 작업 디렉토리 확인, 경로 및 파일명 결합, 파일 존재 여부 확인과 같은 일반적인 파일 작업들을 코드 예제를 통해 리뷰합니다.
 

 

Python 중급 강좌 - 6. 파일시스템(File system) 관리

Python의 pathlib은 파일 시스템의 파일 및 디렉토리에 액세스 하기 위한 여러 명령 및 클래스를 제공합니다.

os.path 도 사용되나, 3.6 버전 이상의 Python에서 pathlib을 사용하실 것을 권장해 드립니다.

 

Python으로 path 관리 작업

특히, 애플리케이션을 개발하면서, 파일의 full path나 해당 개체가 file인지 directory인지 체크해야 할 경우가 있습니다.

이러한 다양한 작업을 pathlib을 이용해 수행 가능합니다.

# Python 3.6 이상 필요
# 라이브러리 참조
from pathlib import Path

# 현재 작업 디렉토리 체크
cwd = Path.cwd()
print('\nCurrent working directory:\n' + str(cwd))

# 전체 경로명을 경로(path)와 파일명을 join 해 생성 / 출력
new_file = Path.joinpath(cwd, 'new_file.txt')
print('\nFull path:\n' + str(new_file))

# 파일이 존재하는지 체크
print('\nDoes that file exist? ' + str(new_file.exists()) + '\n')

이러한 일반적인 path 작업을 Python에서 진행할 수 있습니다.

 

Python에서 디렉토리(directory) 작업

from pathlib import Path
cwd = Path.cwd()

# 상위 디렉토리 참조
parent = cwd.parent

# 디렉토리인지 체크
print('\nIs this a directory? ' + str(parent.is_dir()))

# 파일인지 체크
print('\nIs this a file? ' + str(parent.is_file()))

# 하위 디렉토리 목록 리스트
print('\n-----directory contents-----')
for child in parent.iterdir():
    if child.is_dir():
        print(child)

이렇게 디렉토리 관련 작업을 Python에서 처리 가능합니다.

 

Python에서 파일작업

from pathlib import Path
cwd = Path.cwd()

# 미리 demo.txt 파일을 추가합니다.
demo_file = Path(Path.joinpath(cwd, 'demo.txt'))

# 파일명 가져오기
print('\nfile name: ' + demo_file.name)

# 파일의 확장자 가져오기
print('\nfile suffix: ' + demo_file.suffix)

# 폴더명 가져오기
print('\nfile folder: ' + demo_file.parent.name)

# 크기 가져오기
print('\nfile size: ' + str(demo_file.stat().st_size) + '\n')

이렇게 파일 관련 작업을 Python에서 수행 가능합니다.

 

추가적으로 자주 사용하게 되는 여러 파일&디렉토리 작업들을 정리합니다.

 

특정 디렉토리의 모든 파일 목록을 리스트로 가져오는 방법

# listdir을 이용하는 방법
from os import listdir
from os.path import isfile, join
from pathlib import Path

# 현재 path 지정
mypath = Path.cwd()
print(mypath)

# onlyfiles에 list로 저장
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
print(onlyfiles)

# 또는 glob을 이용한 방법
import glob
print(glob.glob(join(str(mypath), '*.py')))

이 외에도 여러 방법을 아래 링크에서 확인 가능합니다.

참고링크 : python - How do I list all files of a directory? - Stack Overflow 

 

 

그럼 다음 강좌에서 뵐게요.

 

 

파이썬 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 파이썬 & 머신러닝 코딩 마스터 

파이썬-책구매링크.png

 

참고자료

개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝

c9-python-getting-started/more-python-for-beginners/06 - Managing the file system at master · CloudBreadPaPa/c9-python-getting-started (github.com)

python - How do I list all files of a directory? - Stack Overflow

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 34061
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 17177
118 오픈소스 소통을 위한 Git 공부하기 | ep6. 내 저장소에 소스를 푸시하기 위한 Fork | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.02 74
117 오픈소스 소통을 위한 Git 공부하기 | ep5. 브랜치 (Branch) 이해하기 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.01 45
116 오픈소스 소통을 위한 Git 공부하기 | ep4. 변경 단위를 만들기 위한 Commit | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.31 44
115 오픈소스 소통을 위한 Git 공부하기 | ep3. 소스를 가져오기 위한 Clone | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.30 59
114 오픈소스 소통을 위한 Git 공부하기 | ep2. Git를 소개합니다 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.28 52
113 오픈소스 소통을 위한 Git 공부하기 | ep1. 버전 관리의 중요성 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.27 55
112 오픈소스 소통을 위한 Git 공부하기 | ep0. 인트로 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.24 111
111 Azure VM - 오픈소스 ROS Gazebo Web 설치 및 실행 file 코난(김대우) 2022.10.19 153
110 parquet 파일의 meta 정보 추출 코난(김대우) 2021.11.16 1127
109 embedded SQL - GlueSQL, rust 기반 오픈소스 프로젝트 file 코난(김대우) 2021.10.22 453
108 대규모 머신러닝 프로젝트 Serving에 사용되는 Python WAS, ASGI - uvicorn file 코난(김대우) 2021.10.06 1009
107 Apache Arrow 리뷰 file 코난(김대우) 2021.10.05 2046
106 autopep8을 이용한 python 린트(linting) 구현 코난(김대우) 2021.09.15 684
105 Python에서 환경변수(environment variable) 처리 코난(김대우) 2021.09.15 252
104 Python에서 random 문자열이나 숫자 가져오는 방법 코난(김대우) 2021.09.15 967
103 Python 중급 강좌 - 9. 비동기 작업(Asynchronous operations): asyncio 코난(김대우) 2021.01.03 760
102 Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with 코난(김대우) 2021.01.03 420
101 Python 중급 강좌 - 7. 파일작업(File read/write) file 코난(김대우) 2021.01.03 1420
» Python 중급 강좌 - 6. 파일시스템(File system) 관리 코난(김대우) 2021.01.03 667
99 Python 중급 강좌 - 5. 다중상속(Mixins - multiple inheritance) 코난(김대우) 2021.01.03 492





XE Login