특정 하위 디렉토리에 있는 파일 목록을 보고 싶을때 어떻게 할까요?
파이썬에는 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 :
결과를 보면 실제로 해당 폴더명으로 디렉토리가 변경 된것을 알 수 있습니다.
os.listdir를 통해 해당 폴더 파일 리스트 반환
해당 폴더내에 어떤 파일들이 있는지는 os.listdir를 통해 확인 가능합니다.
import os
os.chdir('./키워드리스트')
print(os.listdir())
output :
결과를 보시면 해당 폴더내 파일들을 리스트 형태로 반환 하는걸 알 수 있습니다.
여기선 우리가 원하는건 이 파일들의 파일명만 추출하고싶습니다.
물론 .(dot)을 기준으로 파이썬 문법(split함수)을 통해 해결할 수도 있지만, 좀더 fancy한방법을 이용해보겠습니다.
os.splitext
import os
os.chdir('./키워드리스트')
file_names = os.listdir()
for filename in file_names:
print(os.path.splitext(filename))
output :
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 :
+보너스 (특정 확장자 파일만 찾기)
우리가 지금 까지 배운것을 응용해보면 특정 확장자를 가진 파일만 추출하는 것도 가능하겠죠?
예를들어 현재 폴더내에 .txt 확장자만 보고 싶다면 어떻게 할까요?
import os
os.chdir('./키워드리스트')
file_names = os.listdir()
for filename in file_names:
if os.path.splitext(filename)[1] == '.txt':
print(filename)
output :
splitext를 이해하셨다면 if문을 통해 조건을 건다면, 충분히 해결 가능합니다.
'파이썬 > 파이썬 중급' 카테고리의 다른 글
함수에있는 **kwargs는 뭘까? (0) | 2023.01.16 |
---|---|
[파이썬] argparse 란? | 사용법 (0) | 2022.08.29 |
[파이썬 중급] getattr | setattr | delattr 은 무엇일까? (0) | 2021.10.14 |
[파이썬 중급] @property, @함수명.setter 사용법 (1) | 2021.07.23 |
[파이썬 중급] 진법 변환(N진수 -> 10진수 | 10진수 -> N진수) (0) | 2021.06.18 |
댓글