brunch

You can make anything
by writing

C.S.Lewis

by 위키북스 Nov 30. 2020

실전 프로그래밍 - 첫 번째

특정 디렉터리의 파일명을 출력해 보자

이제 실전 단계입니다. 여러 개의 엑셀 파일을 하나로 합치는 프로그램을 만들어보면서 2, 3, 4 장에서 배운 파이썬 기초 문법을 활용할 수 있습니다. 우선 아래 영상을 보면서 실전 프로그래밍 과정에서 만들 프로그램이 어떤 것인지 한번 확인해보기 바랍니다.


엑셀 자동화 with 파이썬: 여러 개의 엑셀 파일을 하나로 통합하기 - YouTube


영상에서는 《일 잘하는 직장인을 위한 엑셀 자동화 with 파이썬》의 7.2절에서 소개하는 ‘엑셀 파일 통합하기’를 저자분이 하나씩 단계별로 실행하면서 설명합니다. 단계적으로 실행하는 방법은 저자분의 영상을 통해 학습하고, 이 글에서는 영상에서 소개된 프로그램이 이 책의 어느 부분에서 소개되고 있는 내용인지를 중점적으로 살펴보겠습니다. 초보자분들은 이번 글부터 조금 어려움을 느낄 수 있을 것 같은데요, 3장에서 설명하는 함수, 클래스, 모듈 등의 개념이 본격적으로 나오기 때문입니다. 이번 글을 읽기 전에 아래 내용에 대해 우선 간단하게 복습해보시기 바랍니다. 

[팁 - 함수, 클래스, 모듈 복습하기]
이번 글에 나오는 코드를 이해하려면 클래스와 모듈, 메서드 등의 용어에 대해 알고 있어야 합니다. 3장에서 자세히 설명하고 있지만 코드를 이해하기 위해 간단하게 정리했습니다.

'함수'는 프로그램 코드에서 어떤 작업을 수행하기 위해 반복적으로 실행되는 부분들을 한데 모아 특정 입력값에 대해 특정 결괏값을 돌려주도록 만든 것입니다.

'클래스'는 어떤 관련 '함수'와 데이터(변수)를 한데 모은 것이고, 클래스 안에 있는 함수를 가리켜 특별히 '메서드'라고 부릅니다. 다시 말해 함수와 메서드는 형식상 차이는 거의 없지만 클래스와 무관하게 독립적으로 존재하는 것을 함수라 칭하고, 특별히 클래스에 속해 있는 함수를 메서드라고 합니다.

'모듈'은 앞에서 설명한 변수, 함수, 클래스를 한데 모은 파이썬 파일(.py)을 의미합니다. 즉, 파이썬 코드를 작성해서 파일로 저장하면 해당 파일 자체가 모듈이 됩니다. 프로그래밍할 때는 모든 것을 직접 작성하지 않고 이미 다른 사람이 잘 만들어둔 모듈을 가져와서 쓰는 경우가 아주 흔하고, 파이썬 프로그래머들을 위해 널리 사용될 만한 것들을 미리 만들어서 파이썬 배포판을 통해 제공하는 모듈들을 내장 모듈(built-in module)이라고 합니다.

* 함수: https://wikidocs.net/24
* 클래스: https://wikidocs.net/28
* 모듈: https://wikidocs.net/29


지정된 디렉터리에 있는 파일명 출력하기 

다음은 영상에서 첫 번째로 소개하는 코드입니다. pathlib 내장 모듈에 있는 Path 클래스의 glob() 메서드를 이용해 엑셀 파일을 모아둔  디렉터리(C:\myPyExcel\data\ch07\sales_data\input)에서 파일 이름을 가져와 출력하는 코드입니다.


[ 전체 코드 ]

https://gist.github.com/wikibook/3fba3ae4a1db1b9ccf5fe091305ab5d3


[ 실행 결과 ]


[ 코드 분석 ]


from pathlib import Path

파일 조작을 위한 내장 모듈 pathlib 중에서 Path라는 클래스를 사용하기 위해 선언한다는 의미입니다. 파이썬에서는 변수, 함수, 클래스 등의 코드가 저장된 파일을 모듈(module)이라 하고, 특히 이미 만들어진 모듈을 내장 모듈이라고 합니다. 즉, 내장 모듈인 pathlib는 파일의 경로 파악과 파일 처리를 손쉽게 하도록 만들어져 제공되는 코드 모음이라고 생각하면 됩니다(3장 105쪽의 ‘내장 모듈’ 참고). 이러한 pathlib 중 Path라는 클래스를 사용하기 위해 선언하는 코드입니다.


input_folder = 'C:/myPyExcel/data/ch07/sales_data/input'

실제 엑셀 파일이 저장된 디렉터리를 input_folder라는 변수에 넣는 코드입니다.


raw_data_dir = Path(input_folder)

첫 번째 줄에서 선언한 Path 클래스를 실제로 사용하려면 객체로 선언해야 합니다. 클래스와 객체의 관계는 붕어빵틀과 붕어빵이라는 개념으로 많이 설명하는데요, 3장 94쪽에 관련 내용이 친절하게 설명돼 있으니 다시 한번 꼼꼼하게 살펴보기 바랍니다. 이 코드를 통해 실제 데이터가 저장된 폴더 정보가 포함된 raw_data_dir라는 객체가 선언됩니다.


excel_files = raw_data_dir.glob('상반기_제품_판매량_*')

Path 클래스에서 패턴과 일치하는 파일명을 찾아서 반환하는 역할을 하는 메서드가 glob()입니다. 즉, raw_data_dir 객체에서 지정된 폴더 중 ‘상반기_제품_판매량_*’ 패턴과 일치하는 파일명을 찾아서 excel_files라는 변수에 넣는 코드입니다. 참고로 메서드는 실제로 작업을 수행하는 기능이고, 클래스는 이러한 메서드의 모음이라고 생각하면 됩니다. 즉 Path 클래스는 다음과 같은 메서드의 모음인데, Path 클래스에 속한 메서드는 책의 107쪽 표 3-4에 다음과 같이 정리돼 있습니다.

Path 클래스 메서드
for excel_file in excel_files:     
    print(excel_file) # 원본 데이터 파일 경로 출력

마지막으로 excel_files에 저장된 파일명을 하나씩 화면에 출력하는 코드입니다.


지금까지 특정한 디렉터리에 저장된 파일명을 출력하는 코드를 살펴봤습니다. 이 코드를 통해 모듈, 클래스, 메서드 등의 개념을 어느 정도 이해하셨다면 파이썬을 절반 정도 공부했다고 생각하셔도 됩니다. ^^ 


[연관 글]

파이썬 프로그래밍 학습의 어려움 

프로그램의 시작, 문법을 배워보자  

실전 프로그래밍 첫 번째: 특정한 디렉터리의 파일명을 출력해보자  

실전 프로그래밍 두 번째: 엑셀 파일을 데이터 프레임에 넣어보자  

실전 프로그래밍 세 번째: 데이터 프레임에 있는 데이터로 엑셀 파일을 만들어보자  


작가의 이전글 프로그래밍의 시작, 문법을 배워보자
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari