파이썬에서 특정확장자 파일 찾기

반응형
    반응형

    파이썬에서 해당폴더의 특정확장자 파일이 있는지 검색하는 방법입니다. 

    전체경로를 가지고 오는 것까지 하겠습니다.

    두가지 방법만 설명하겠습니다. 

    • os 로 찾기
    • glob 로 찾기

     

    OS 로 찾기

    이전 포스팅 에서 한번 살짝 다루었는데 그때는 os를 이용해 파일 목록만 가져왔습니다. 

    이번에는 좀 더 업그레이드 되어서 해당 폴더에서 특정 확장자 파일목록만 가져오겠습니다.

     

    이걸 하기 위해서는 endswith()라는 함수를 써야 하는데요. 

    endswith()은 특정 문자열에서 제시한 것이 있는지 없는지 확인하는 함수인데

    다음과 같이 쓸 수 있습니다.

    'abcd'.endswith('cd')

    특정 문자열 뒤에 함수를 넣어주고 확인할 문자열을 괄호안에 넣어주면 됩니다.

     

     

    endswith()를 이용해서 다음과 같이 진행을 합니다. 

    os.listdir()로 전체 파일목록을 가져오면

    endswith()를 이용하여 특정 확장자 파일인지를 파악하고, 

    list comprehension을 이용해 리스트로 바로 만들겠습니다.

     

    import os
    Dir = r'H:\autopython'
    fileEx = r'.xlsx'
    xlsx_list = [file for file in os.listdir(Dir) if file.endswith(fileEx)]
    xlsx_list

    약간 복잡할 수도 있지만 파이썬의 여러가지 기능을 이용해서 할 수 있습니다.

     

    전체경로를 가져오기 위해서는 os.path.join()으로 리스트에 저장하면 됩니다. 

    os.path.join()은 문자열 join과 같은 역할이라고 생각하시면 됩니다.

    단지 경로양식에 맞게 맞춰준다고 보면 됩니다.

     

    같은 방식으로 xlsx_list를 가져오지만 list에 저장하는 것만 달라지게 설정하면 됩니다.

    import os
    Dir = r'H:\autopython'
    fileEx = r'.xlsx'      # file -> os.path.join(Dir,file)
    xlsx_list = [os.path.join(Dir,file) for file in os.listdir(Dir) if file.endswith(fileEx)] 
    xlsx_list 

     

    glob 로 찾기

    이번에는 glob로 찾아보겠습니다. 

    os에 비하면 훨씬 간편합니다. 경로를 먼저 설정하고 바로 찾으면 됩니다. 

    윈도우에서 검색기능을 하면 모든 파일은 * 을 이용해 찾곤 했는데요.

    그와 같은 기능으로 *을 씁니다.

    경로와 함께 리스트로 출력됩니다.

    import glob
    target = r"H:\autopython\*.xlsx"
    xlsx_list = glob.glob(target)
    xlsx_list

    해당폴더의 서브 디렉토리에서 찾고 싶다면 경로에 ** 을 덪붙여서 진행합니다.

    리스트 정의는 생략하겠습니다.

    import glob
    target = r"H:\autopython\**\*.txt"
    glob.glob(target)

     

    glob가 os보다는 경로를 찾을때 더 좋은 것 같고 파일 이름만 찾고 싶다면 os를 쓰는게 더 나은 것 같습니다.

     

    관련 포스팅

    [Python/기초] - [Python]폴더 안에 파일 이름 목록 가져오기

     

    'Python > 기초' 카테고리의 다른 글

    파이썬 64/32bit 확인  (4) 2021.06.10
    [Python] 패키지 설치 목록으로 나의 개발환경 복사하기  (0) 2021.06.07
    [Python] array Class  (0) 2021.04.28
    [Python] conda 기본 명령  (0) 2021.04.24
    [Python] Set  (0) 2021.04.18

    댓글

    Designed by JB FACTORY

    ....