'경로 탐색'에 해당되는 글 1건

  1. 2019.01.08 [CSV] 여러개의 CSV파일 처리 - 1

대부분의 프로젝트에서는 하나의 파일이 아닌 여러개의 파일 활용

여러개의 CSV파일로부터 행과 열의 개수 확인

 

다음 예제코드는 현재폴터('./')에 있는 여러개의 CSV파일의 개수와 각 CSV파일의 행, 열의 개수를 세어 화면에 출력해주는 코드

 

 

 

 

 

- 코드설명 -


   3 import glob

   4 import os


 

3행

- glob 모듈 임포트

- glob모듈을 이용해 특정 패턴과 일치하는 모든 경로명을 탐색 가능

- 패턴에는 * 등 유닉스 쉘 스타일의 와일드카드 문자 포함 가능

- 본 예제에서는 8행에 서 '2017*'를 이용, 2017로 시작하는 파일명을 갖는 모든 파일을 검색

- 읽어오는 CSV파일은 파일명이 모두 2017로 시작되는 파일임, 확장자가 csv인 모든파일을 검색하고자 한다면 8행에 '2007*'을 '*.csv'로 변경하면 가능

4행

- os 모듈 임포트

- 경로명을 파싱하는데 유용한 함수 포함

- os.path.basename(path)는 입력받은 경로에서 파일명 반환

 


  9 for input_file in glob.glob(os.path.join(input_path, '2007*')):


 

9행

- 여러개의 입력파일에서 데이터를 처리하기 위한 핵심

- glob 및 os모듈의 함수를 사용하여 처리할 입력파일의 리스트를 생성하고 for문으로 일련의 입력파일을 반복

- os.path.join() 함수는 괄호 안에 있는 두개의 컴포넌트를 결합

- input_path는 입력 파일이 들어있는 폴더의 경로

- '2007*'는 2007 패턴으로 시작하는 파일의 이름을 나타냄

- glob모듈의 glob.glob()함수는 '2007*'의 별표(*)를 실제 파일명으로 확장

- 이 예제에서 glob.glob()과 os.path.join()은 다섯개의 입력파일이 들어있는 리스트 생성

 


 17    print('{0!s}: \t{1:d} rows \t{2:d} columns'.format(\

 18           os.path.basename(input_file), row_counter, len(header)))


 

17,18행

- 각 입력 파일의 파일이름, 파일의 행과 열의 수를 출력하는 print문

- 세개의 열(파일명, 행수, 열수)를 정렬하기 위해 탭 문자(\t) 삽입

- {}문자를 사용해 세개의 값을 print문에 전달

- 첫번째 값: os.path.basename()함수를 이용해 전체 경로명의 마지막요소(파일명)를 추출

- 두번째 값: 변수 row_counter 를 이용해 각 입력 파일에서 행의 개수 추출

- 세번째 값: len()함수를 이용해 각 입력파일의 열 헤더가 들어있는 리스트변수(header)의 원소 개수를 추출

 

 


 19 print('Number of files: {0:d}'.format(file_counter))


 

19행

- file_counter의 값을 사용하여 스크립트에서 처리한 파일의 개수를 출력

 

 

(*) 결과화면

 

(*) 소스코드 및 CSV파일 첨부

 

10_소스코드 및 CSV파일.zip

 

Posted by Roiz
,