본문 바로가기

카테고리 없음

디렉토리 내의 파일을 찾는 파이썬 기능

728x90
반응형

1. 개요

업무를 하다보면 특정 파일 형태의 전체 경로를 불러와야할 때가 있다.

이럴 때, 리눅스의 find 명령어를 사용하면 되지만 파이썬에서 작업할 때는 항상 불편하므로 만들었다.

 

2. 명령어

def list_file_paths(path,file_pattern):
	import os
    import subprocess as sbp
    '''
    이 기능은 vep-dir 또는 optitype-dir 안의 pvacseq input으로 쓸 데이터의 경로를 불러오기 위한 스크립트임.
    지정된 경로 (path)의 끝까지 찾아내려가는 방식이므로 구체적이지 않을 경우 시간이 오래걸림.
    path : 검색하고자 하는 디렉토리
    file_pattern : 파일 이름 패턴
    '''
    cmd=f'find {path} -name *{file_pattern}' #리눅스에서 실행할 명령어를 만듬
    paths=str(sbp.check_output(cmd,shell=1)) # 명령어를 실행한 후에 string으로 변환해줌.
    paths=paths.replace("b'",'').split('\\n') # b'로 시작하는 글자를 제거함.
    paths=[i for i in paths if len(i)>2] # 일정 길이 미만의 잘못된 리스트의 원소들을 제거함.
    print('N of file :',len(paths)) # 전체 파일경로의 수를 리포팅함.
    return paths
    

# 또는 아래것도 괜찮다.
def find_all(path,file_pattern):
	import os
    result = []
    for root, dirs, files in os.walk(path):
        if name in files:
            result.append(os.path.join(root, name))
    return result
728x90
반응형