본문 바로가기

Python_Beginer/Study

HRD 수업>파이썬을 이용한 자동화 스크립트 - 연습문제 15

728x90
'''
1. baseballdataback 폴더에 잇는 모든 csv 파일을 탐색
2. csv 파일 읽기
3. csv 파일 첫 번째 로우 제거 후 다른 파일로 저장
4. 로깅 파일 작성
'''
import csv
import os
import logging

# 로깅 포맷팅 설정
logging.basicConfig(level=logging.DEBUG, filename='baseballdatabank-master\\log.txt',
                    format=' %(asctime)s - %(levelname)s - %(message)s')

def save_and_remove_header(filename):
    # CSV 파일을 읽어 헤더를 제거하고 저장

    # CSV 파일을 리스트로 만든다
    csv_rows = []
    with open(os.path.join('baseballdatabank-master', 'core', filename), 'r', encoding='utf-8') as file:
        reader = csv.reader(file)

        for row in reader:
            if reader.line_num == 1:
                continue  # 첫번째 라인 스킵
            csv_rows.append(row)

    # 리스트를 파일로 쓴다
    with open(os.path.join('baseballdatabank-master', 'header-removed', filename), 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)

        for row in csv_rows:
            writer.writerow(row)


def main():
    # 헤더가 제거된 파일이 저장될 폴더를 만든다
    os.makedirs(os.path.join('baseballdatabank-master', 'header-removed'), exist_ok=True)

    # 작업디렉토리의 모든 CSV 파일을 순회한다
    for filename in os.listdir(os.path.join('baseballdatabank-master', 'core')):
        if not filename.endswith('.csv'):
            continue  # 확장자가 csv가 아니면 스킵한다.

        # 작업 현황 로깅
        logging.debug('saving file: {0} '.format(filename))
        # print('saving file: ', filename)
        # 헤더가 제거된 파일을 저장한다
        save_and_remove_header(filename)

    print('job completed..')


if __name__ == '__main__':
    main()

 

job completed..

Process finished with exit code 0

반응형