[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리
무효 클릭 IP 추적 중...
파이썬/파이썬 중급

[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리

꼬예 2022. 4. 19.
[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리

특정 하위 디렉토리에 있는 파일 목록을 보고 싶을때 어떻게 할까요?

 

파이썬에는 os module을 통해 해당 작업을 쉽게 할 수 있습니다. 

 

os.chdir를 통해 해당 디렉토리로 이동

우선 우리가 원하는 파일명을 추출하기 위해서는 그 파일들이 있는 폴더 경로로 이동해야 합니다. 

 

이때 사용하는것이 os.chdir 인데요 ch -> change / dir -> directory 말그대로 디렉토리를 변경 하는 친구입니다.

 

저는 아래와 같이 상대경로를 이용하여 키워드리스트 라는 폴더명을 가진 디렉토리로 이동하였습니다. 

(해당 함수는 절대경로/상대경로 다 이용가능합니다!)

import os


os.chdir('./키워드리스트')

 

실제로 현재 디렉토리가 변경되었는지 확인해볼까요?

이때 사용하는 함수는

os.getcwd() 

get current working directory 즉 현재 작업 디렉토리 경로를 알려주는 함수를 이용하면 됩니다.

import os


print(os.getcwd())
os.chdir('./키워드리스트')
print(os.getcwd())

output :

[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리 - undefined - os.chdir를 통해 해당 디렉토리로 이동

결과를 보면 실제로 해당 폴더명으로 디렉토리가 변경 된것을 알 수 있습니다. 

 

 

 

os.listdir를 통해 해당 폴더 파일 리스트 반환

해당 폴더내에 어떤 파일들이 있는지는 os.listdir를 통해 확인 가능합니다.

 

 

import os


os.chdir('./키워드리스트')

print(os.listdir())

output :

[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리 - undefined - os.listdir를 통해 해당 폴더 파일 리스트 반환

결과를 보시면 해당 폴더내 파일들을 리스트 형태로 반환 하는걸 알 수 있습니다. 

 

여기선 우리가 원하는건 이 파일들의 파일명만 추출하고싶습니다.

물론 .(dot)을 기준으로 파이썬 문법(split함수)을 통해 해결할 수도 있지만, 좀더 fancy한방법을 이용해보겠습니다. 

 

os.splitext

import os


os.chdir('./키워드리스트')


file_names = os.listdir()

for filename in file_names:
    print(os.path.splitext(filename))

output :

[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리 - undefined - os.splitext

listdir()함수를 통해 뽑은 파일들을 for 문을 통해 하나씩 추출합니다.

이어서 그 추출된 값을  os.path.splitext함수의 인자로 넣어주면 각 파일의 확장자명과, 파일명으로 분리할 수가 있습니다.

 

결과를 보시면 튜플 형태로 분리 된걸  알 수 있는데요.

 

여기서 우리가 원하는것은 파일명이니까 인덱싱을 통해 추출 해볼 수 있겠죠?

import os


os.chdir('./키워드리스트')


file_names = os.listdir()

for filename in file_names:
    print(os.path.splitext(filename)[0])

output :

[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리 - undefined - os.splitext

 

+보너스 (특정 확장자 파일만 찾기)

우리가 지금 까지 배운것을 응용해보면 특정 확장자를 가진 파일만 추출하는 것도 가능하겠죠?

 

예를들어 현재 폴더내에 .txt 확장자만 보고 싶다면 어떻게 할까요?

 

import os


os.chdir('./키워드리스트')


file_names = os.listdir()
for filename in file_names:
    if os.path.splitext(filename)[1] == '.txt':
        print(filename)

output :

[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리 - undefined - +보너스 (특정 확장자 파일만 찾기)

splitext를 이해하셨다면 if문을 통해 조건을 건다면, 충분히 해결 가능합니다.

 

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글

꼬예님의
글이 좋았다면 응원을 보내주세요!