대부분의 프로젝트에서는 하나의 파일이 아닌 여러개의 파일 활용
여러개의 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파일 첨부
'Python' 카테고리의 다른 글
[CSV] 여러개의 CSV파일 처리 - 3 (0) | 2019.01.11 |
---|---|
[CSV] 여러개의 CSV파일 처리 - 2 (0) | 2019.01.10 |
[CSV] 헤더 추가하기 (0) | 2019.01.07 |
[CSV] 행의 연속선택 (0) | 2018.12.12 |
[CSV] 열의 헤더를 사용하여 특정 열을 선택 (0) | 2018.11.27 |