본문 바로가기
  • 게임 개발과 프로그래밍 그리고 인공지능
프로그래밍 언어/파이썬

파이썬 프로그래밍, 어떻게 시작할까? 4 - 하위 디렉터리 검색하기

by huenuri 2024. 10. 5.

이제 6장의 마지막 단원이다.


 
 
 
 

하위 디렉터리 검색하기

 
트정 디렉터리부터 시작해서 그 하위(디렉터리 포함)의 모든 파일 중 파이썬 파일만 출력해 주는 프로그램을 만들려면 어떻게 해야 할까?


 
 
 

1. 다음과 같이 파일을 작성한다.

 
search 함수를 만들고 시작 디렉터리를 입력받도록 코드를 작성했다.


 
 
 

2. 이 디렉터리에 있는 파 일을 검색할 수 있도록 소스를 변경한다.

os.listdir를 사용하면 해당 디렉터리에 있는 파일의 리스트를 구할 수 있다. 여기에서 구하는 파일 리스트는 파일 이름만 포함되어 있으므로 경로를 포함한 파일 이름을 구하기 위해서는 입력으로 받은 dirname을 앞에 붙여주어야 한다. os 모듈에는 디렉터리와 파일 이름을 이어주는 os.paht.join 함 수가 있으므로 이 함수를 사용하면 디렉터리를 포함한 전체 경로를 쉽게 구할 수 있다.
 
코드를 수행하면 이처럼 수행된다.


 
 
 

3. C:/ 디렉터리에 있는 파일 중 확장자가 .py인 파일만 출력하도록 코드를 변경한다.

 

파일 이름에서 확장자만 추출하기 위해 os 모듈의 os.path.splitext 함수를 사용했다. 이 함수는 파일 이름을 확장자를 기준으로 나누어준다. 
이 코드는 확장자 이름이 .py인 경우만 출력하도록 작성했다. C:/ 디렉터리에 파이썬 파일이 없다면 아무것도 출력되지 않는다.


 
 
 

4. 하위 디렉터리를 포함한 모든 파이썬 파일을 검색하는 것이므로 다음과 같이 코드를 변경한다.

 
try-except 문으로 함수 전체를 감싼 이유는 os.listdir를 수행할 때 권한이 없는 디렉터리에 접근하더라도 프로그램이 오류로 종료되지 않고 그냥 수행되도록 하기 위함이다.
full_filename이 디렉터리인지 파일인지 구별하기 위해 os.path.isdir 함수를 사용했다. 디렉터리일 경우 해당 경로를 입력받아 다시 search 함수를 호출했다. 이렇게 해당 디렉터리의 파일이 디렉터리일 경우 다시 search 함수를 호출해 나가면(재귀 호출) 해당 디렉터리의 하위 파일을 다시 검색하기 시작하므로 결국 모든 파일을 검색할 수 있다.


 
 
이 코드를 수행하면 C:/ 디렉터리에 있는 모든 파이썬 파일이 출력된다. 출력 내용이 너무 많아서 프로그램을 끝냈다. os.walk 코드를 사용하면 앞에서 작성한 코드를 더 간단하게 만들 수 있다. os.walk는 시작 디렉터리부터 시작해 하위에 있는 모든 디렉터리를 차례대로 방문하는 함수이다.
 

 

 
이렇게 C:/ 드라이버의 모든 파일이 출력되고 있다.
 


 
 
 

학습을 마치고

이 다음 chapter에 있는 내용은 고급 파이썬 관련 내용들이라 지금은 별로 공부하지 않아도 될 것 같다. 아니면 필요할 때 떠들어봐도 좋을 것이다.
하지만 왠지 공부해보고 싶은 마음이 든다. 파일 출력도 어렵지만 해보니 의미가 있었듯 말이다.