kyoungjoosin / Study

0 stars 0 forks source link

[python] 특정 파일 리스트 가져오기 #2

Open kyoungjoosin opened 2 months ago

kyoungjoosin commented 2 months ago

특정 폴더(디렉토리) 파일 리스트 가져오기

[os.listdir]

os 모듈의 listdir을 사용하여 특정 폴더에 있는 파일 리스트를 가져올 수 있다.

import os

path = "./test/"    //특정 폴더의 경로
file_list = os.listdir(path)

print(file_list)

현재 디렉토리에 있는 모든 파일 리스트를 가져온다. 실행 결과는 다음과 같다.

['testdira', 'eq.js', 'test.db', 'etl.py', '.etl.py.swp', 'testdirb', 'testdirc', 'find_file.py', 'asd.py', 'namespace_.py', 'namespace_2.py', 'eq.py']

여기서 .py 확장자를 가진 파일 리스트를 보고 싶다면 다음 코드를 추가한다.

import os

path = "./test/"
file_lsit = os.listdir(path)
file_list_py = [file for file in file_list if file.endswith(".py")]

print(file_list_py)

파이썬에서 startswith(), endswith() 은 문자열 함수 중 하나이다.

['etl.py', 'find_file.py', 'asd.py', 'namespace_.py', 'namespace_2.py', 'eq.py']

실행하면 다음과 같이 .py 형식으로 끝나는 파일 리스트만 보여준다.

[glob.glob]

glob는 os.listdir과 완전히 같은 형태인데, *path를 정의하는 부분에 애스터리스크()가 붙은 것** 이 다르다.

import os

path = "./test/*"    //특정 폴더의 경로
file_list = glob.glob(path)
file_list_py = [file for file in file_list if file.endswith(".py")]
print(file_list)

실행하면

['./test/testdira', './test/eq.js', './test/test.db', './test/etl.py', './test/testdirb', './test/testdirc', './test/find_file.py', './test/asd.py', './test/namespace_.py', './test/namespace_2.py', './test/eq.py']

listdir 과 다르게 경로명까지 전부 가져온다.

결론적으로,

공통) 둘 다 특정 폴더의 파일 리스트를 가져온다.

차이) listdir 은 해당 경로의 파일/디렉토리명만 가져오지만, glob 은 탐색한 경로까지 함께 가져온다.

kyoungjoosin commented 2 months ago

참고 [python] 특정 파일 리스트 가져오기(listdir, glob) https://itholic.github.io/python-listdir-glob/

[Python] startswith(), endswith() : 문자열 시작 문자, 끝 문자로 검색하는 함수 https://m.blog.naver.com/regenesis90/222387142436