배움 기록/Programming

[python, pathlib, glob] 특정 directory (경로) 추출하기

Spezi 2023. 3. 29. 17:45
반응형

원하는 파일 경로에서 "test"라는 단어로 시작하는 파일의 이름을 추출하고 싶다고 가정해 보자.

(나의 경우 파일이름이 "test"를 포함하는 경우 "test"로 시작함)

 

예) 이 경로에서 [test1, test2, test3]이라는 파일 이름의 리스트를 추출하고 싶음

[WindowsPath('O:ABC/test1'),
 WindowsPath('O:ABC/test2'),
 WindowsPath('O:ABC/test3')]

 

안 좋은 답:...

리스트를 만들어서 for loop을 이용해 test가 있는지 확인하고, 있으면 리스트로 append 함

test_list = []
    for fname in os.listdir(test_path):
        if 'test' in fname:
           test_list.append(fname)

 

하지만 저 위의 코드를 Path.glob을 이용하면 아래와 같이 한 줄로 구현할 수 있다.

glob function 에는 pattern을 인자로 넣어줘야 하는데, 이때 패턴이란 이 경우에 "test"가 된다. "test"로 시작하는 모든 파일을 포함하기위해 test*을 사용했다.

 

# test_path 는 pathlib 라이브러리의 Path 를 통해 얻음

test_list = {f.parent.stem for f in test_path.glob("test*/xxx.csv")}

 

여기에 stem function을 이용해 내가 원하는 마지막 경로의 이름을 추출했다.


[f.parent for f in moe_file.glob("ABC*/xx.csv")]
# [WindowsPath('O:ABC/test1'), WindowsPath('O:ABC/test2'), WindowsPath('O:ABC/test3')]

[f.parent.stem for f in moe_file.glob("ABC*/xx.csv")]
# ['test1','test2','test3']

 

 

 

 

 


배움을 기록하기 위한 공간입니다. 

수정이 필요한 내용이나 공유하고 싶은 것이 있다면 언제든 댓글로 남겨주시면 환영입니다 :D

반응형