반응형

파이썬 여러 CSV 파일 하나로 합치기는 실무에서 자주 쓰는 작업이다.

날짜별로 나뉜 파일이나 폴더별로 흩어진 데이터를 하나로 모을 때 특히 유용하다.

한 번 방법을 익혀두면 반복 업무 시간을 많이 줄일 수 있다.

 

- 기본 예제

아래 코드는 현재 폴더의 CSV 파일을 모두 읽어서 merged.csv 하나로 저장한다.

import os
import csv

folder_path = "."
csv_files = [name for name in os.listdir(folder_path) if name.endswith(".csv") and name != "merged.csv"]

header_saved = False

with open("merged.csv", "w", newline="", encoding="utf-8-sig") as out_file:
    writer = csv.writer(out_file)

    for csv_name in csv_files:
        with open(csv_name, "r", newline="", encoding="utf-8-sig") as in_file:
            reader = csv.reader(in_file)
            header = next(reader)

            if not header_saved:
                writer.writerow(header)
                header_saved = True

            for row in reader:
                writer.writerow(row)

print("merged.csv 저장 완료")

 

- 코드 흐름 정리

  1. 현재 폴더에서 csv 파일 목록을 가져온다.
  2. 결과 파일인 merged.csv는 목록에서 제외한다.
  3. 첫 번째 파일의 제목 행만 한 번 저장한다.
  4. 그다음부터는 데이터 행만 계속 추가한다.

 

- 이런 경우에 특히 유용하다

날짜별 주문 데이터 합치기

월별 매출 파일 합치기

크롤링 결과 여러 개를 한 파일로 모으기

로그 파일 요약 전 데이터 통합하기

 

- 주의할 점

  • 모든 CSV 열 구조가 같아야 한다.
  • 인코딩이 다르면 읽기 오류가 날 수 있다.
  • 제목 행을 중복 저장하지 않도록 처리해야 한다.

 

- 정리하며

파이썬 여러 CSV 파일 하나로 합치기는 csv 모듈과 파일 목록 처리만 알면 충분히 구현할 수 있다.

반복 데이터 정리에 매우 유용하므로 파일 자동화를 할 계획이라면 꼭 익혀둘 만한 주제다.

반응형
반응형

파이썬 파일명 일괄 변경은 자동화에서 체감 효과가 큰 작업이다.

파일이 수십 개만 넘어가도 손으로 바꾸는 일은 금방 귀찮아진다.

파이썬으로 처리하면 규칙에 맞게 한 번에 바꿀 수 있다.

 

- 기본 예제

아래 코드는 현재 폴더의 txt 파일 이름 앞에 new_를 붙이는 예제다.

import os

folder_path = "."

for name in os.listdir(folder_path):
    if name.endswith(".txt"):
        old_path = os.path.join(folder_path, name)
        new_name = "new_" + name
        new_path = os.path.join(folder_path, new_name)
        os.rename(old_path, new_path)

print("파일명 변경 완료")

 

- 숫자를 붙여서 바꾸려면

import os

folder_path = "."
count = 1

for name in os.listdir(folder_path):
    if name.endswith(".jpg"):
        old_path = os.path.join(folder_path, name)
        new_name = f"image_{count}.jpg"
        new_path = os.path.join(folder_path, new_name)
        os.rename(old_path, new_path)
        count += 1

 

- 실행 전에 꼭 확인할 것

  1. 대상 폴더를 정확히 지정했는지 확인한다.
  2. 확장자 조건이 맞는지 확인한다.
  3. 기존 이름과 새 이름이 충돌하지 않는지 확인한다.
  4. 중요한 파일은 미리 백업해두는 편이 좋다.

 

- 왜 os.rename을 쓰는가

os.rename은 파일 이름을 바꾸거나 위치를 이동할 때 기본으로 많이 쓴다.

문법이 단순하고 빠르게 적용할 수 있어서 초보자에게도 적합하다.

 

- 정리하며

파이썬 파일명 일괄 변경은 규칙만 정하면 바로 자동화할 수 있는 대표 작업이다.

폴더와 확장자, 새 이름 규칙만 정확히 정리하면 손으로 하던 작업을 크게 줄일 수 있다.

반응형
반응형

파이썬 폴더 내 파일 목록 가져오기는 자동화 작업의 출발점이다.

어떤 파일이 있는지 먼저 알아야 이름 변경이나 이동, 변환 작업도 할 수 있기 때문이다.

그래서 파일 자동화를 배우는 사람이라면 꼭 한 번은 쓰게 되는 코드다.

 

- os 모듈로 파일 목록 가져오기

import os

folder_path = "."

file_list = os.listdir(folder_path)

for name in file_list:
    print(name)

 

- 파일만 따로 보려면

폴더까지 같이 나오면 불편할 수 있다.

이럴 때는 파일만 골라낼 수 있다.

import os

folder_path = "."

for name in os.listdir(folder_path):
    full_path = os.path.join(folder_path, name)
    if os.path.isfile(full_path):
        print(name)

 

- 특정 확장자만 가져오려면

import os

folder_path = "."

for name in os.listdir(folder_path):
    if name.endswith(".csv"):
        print(name)

 

- 이런 작업에 많이 씁니다

  • 파일명 일괄 변경 전 목록 확인
  • 특정 확장자 파일만 추출
  • 여러 파일 반복 처리
  • 폴더 자동 정리

 

- 정리하며

파이썬 폴더 내 파일 목록 가져오기는 자동화의 출발점이다.

os.listdir와 os.path.isfile만 익혀도 대부분의 파일 반복 작업을 시작할 수 있다.

반응형
반응형

파이썬 JSON 파일 읽고 저장하기는 API나 설정 파일을 다룰 때 자주 쓰는 작업이다.

JSON은 딕셔너리와 구조가 비슷해서 파이썬과 잘 맞는다.

그래서 CSV 다음으로 많이 배우는 파일 형식 중 하나다.

 

- JSON 파일 저장하기

아래 코드는 파이썬 딕셔너리를 JSON 파일로 저장하는 예제다.

import json

data = {
    "name": "민수",
    "age": 27,
    "city": "Seoul"
}

with open("user.json", "w", encoding="utf-8") as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

 

- JSON 파일 읽기

저장한 JSON 파일을 읽는 코드는 아래와 같다.

import json

with open("user.json", "r", encoding="utf-8") as file:
    data = json.load(file)

print(data)
print(data["name"])

 

- 왜 ensure_ascii=False를 넣는가

이 옵션을 넣지 않으면 한글이 유니코드 형태로 저장될 수 있다.

한글을 그대로 보이게 하려면 ensure_ascii=False를 넣는 편이 좋다.

indent=4는 들여쓰기를 넣어 읽기 좋게 만들어준다.

 

- 실행 결과 예시

{
    "name": "민수",
    "age": 27,
    "city": "Seoul"
}

 

- 정리하며

파이썬 JSON 파일 읽고 저장하기는 json.dump와 json.load만 익히면 바로 사용할 수 있다.

설정 파일이나 API 응답 데이터를 다룰 때 매우 자주 쓰이므로 꼭 익혀둘 만하다.

반응형
반응형

파이썬 TXT 파일 읽기와 쓰기는 가장 기본적인 파일 처리다.

메모장 파일을 저장하거나 불러오는 작업은 CSV보다 더 단순해서 입문자가 익히기 좋다.

로그 저장이나 간단한 메모 자동화에도 자주 사용된다.

 

- TXT 파일 쓰기

아래 코드는 텍스트 파일을 새로 만들어 내용을 저장하는 예제다.

text = "파이썬 파일 처리 연습입니다.\n오늘은 txt 파일을 저장합니다."

with open("memo.txt", "w", encoding="utf-8") as file:
    file.write(text)

print("memo.txt 저장 완료")

 

- TXT 파일 읽기

저장한 파일을 다시 읽는 코드는 아래와 같다.

with open("memo.txt", "r", encoding="utf-8") as file:
    content = file.read()

print(content)

 

- 한 줄씩 읽으려면

로그 파일처럼 줄 단위로 처리할 때는 for문을 많이 쓴다.

with open("memo.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())

 

- 자주 하는 실수

  • encoding을 안 넣어서 한글이 깨지는 경우
  • "w" 모드로 열어서 기존 내용을 덮어쓰는 경우
  • 줄바꿈 문자 \n을 안 넣어서 한 줄로 붙는 경우

 

- 이런 경우에 유용하다

메모 자동 저장

로그 파일 읽기

간단한 설정 파일 만들기

출력 결과를 텍스트로 남기기

 

- 정리하며

파이썬 TXT 파일 읽기와 쓰기는 open 함수만 이해해도 바로 시작할 수 있다.

읽기와 쓰기 모드, encoding, 줄바꿈만 익혀두면 다양한 파일 작업으로 확장하기 쉽다.

반응형
반응형

파이썬으로 CSV를 다루다 보면 한글 깨짐 문제를 자주 만나게 된다.

특히 엑셀에서 열었을 때 글자가 이상하게 보이면 encoding 문제일 가능성이 크다.

이 글에서는 파이썬 한글 CSV 깨짐 해결 방법을 가장 기본적인 형태로 정리해본다.

 

- 왜 한글이 깨질까

파일 자체는 정상인데 읽는 프로그램이 다른 문자 인코딩으로 해석하면 한글이 깨질 수 있다.

파이썬에서는 주로 utf-8을 많이 쓴다.

하지만 윈도우 환경이나 오래된 프로그램은 cp949를 쓰는 경우도 많다.

엑셀에서는 utf-8-sig가 더 안전한 경우가 많다.

 

- CSV 저장할 때 가장 많이 쓰는 방식

import csv

rows = [
    ["이름", "메모"],
    ["민수", "테스트 데이터"],
    ["지은", "한글 저장 확인"]
]

with open("korean.csv", "w", newline="", encoding="utf-8-sig") as file:
    writer = csv.writer(file)
    writer.writerows(rows)

 

- 이미 저장된 파일을 읽을 때

상대가 어떤 인코딩으로 저장했는지 모르면 하나씩 시도해봐야 한다.

import csv

with open("korean.csv", "r", newline="", encoding="utf-8-sig") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

만약 깨진다면 cp949로 다시 시도할 수 있다.

import csv

with open("korean.csv", "r", newline="", encoding="cp949") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

 

- utf-8, utf-8-sig, cp949 차이

  • utf-8은 가장 일반적인 인코딩이다.
  • utf-8-sig는 엑셀에서 한글 깨짐을 줄일 때 자주 쓴다.
  • cp949는 윈도우 환경에서 오래전부터 많이 쓰인 한글 인코딩이다.

 

- 실무에서는 어떻게 처리하면 되나

  1. 내가 새로 만드는 CSV는 utf-8-sig로 저장한다.
  2. 외부에서 받은 CSV는 utf-8-sig와 cp949를 순서대로 확인한다.
  3. 엑셀로 열어봐야 한다면 utf-8-sig를 우선 고려한다.

 

- 정리하며

파이썬 한글 CSV 깨짐 해결의 핵심은 인코딩이다.

새 파일을 만들 때는 utf-8-sig를 쓰고 외부 파일은 utf-8-sig와 cp949를 먼저 의심하면 된다.

반응형
반응형

파이썬 CSV 파일 읽기는 저장보다 더 자주 쓰는 작업이다.

이미 있는 데이터를 불러와서 출력하거나 가공할 때 기본이 된다.

엑셀 파일보다 가볍고 다루기 쉬워서 CSV를 먼저 익혀두면 실무에 도움이 된다.

 

- 가장 기본적인 CSV 읽기

아래 코드는 CSV 파일 내용을 한 줄씩 읽어서 출력하는 예제다.

import csv

with open("people.csv", "r", newline="", encoding="utf-8-sig") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

 

- 실행 결과

위 코드를 실행하면 각 행이 리스트 형태로 출력된다.

['이름', '나이', '지역']
['민수', '27', '서울']
['지은', '31', '부산']
['현우', '29', '대전']

 

- 특정 열만 가져오려면

이름만 출력하고 싶다면 인덱스로 접근하면 된다.

import csv

with open("people.csv", "r", newline="", encoding="utf-8-sig") as file:
    reader = csv.reader(file)
    next(reader)

    for row in reader:
        print(row[0])

 

- 코드 설명

  • csv.reader()는 CSV 내용을 한 줄씩 읽는다.
  • next(reader)는 첫 줄 제목 행을 건너뛴다.
  • row[0]은 첫 번째 열을 의미한다.

 

- 자주 하는 실수

  1. 한글 CSV를 읽는데 encoding을 안 맞춰서 깨지는 경우
  2. 제목 행까지 데이터로 처리하는 경우
  3. row[3]처럼 존재하지 않는 열 번호를 써서 오류가 나는 경우

 

- 정리하며

파이썬 CSV 파일 읽기는 csv.reader만 익혀도 바로 시작할 수 있다.

제목 행 건너뛰기와 열 인덱스 접근까지 익혀두면 대부분의 기본 작업은 처리할 수 있다.

반응형
반응형

파이썬 CSV 파일 만들기는 파일 처리 입문에서 가장 많이 찾는 작업 중 하나다.

엑셀 없이도 데이터를 표 형태로 저장할 수 있어서 실무에서도 자주 쓴다.

특히 목록 데이터를 저장하거나 다른 프로그램으로 넘길 때 CSV 형식이 많이 사용된다.

 

- CSV 파일이란

CSV는 쉼표로 데이터를 구분한 텍스트 파일이다.

엑셀에서도 쉽게 열 수 있고 대부분의 데이터 도구와 호환된다.

그래서 파이썬으로 데이터를 저장할 때 가장 먼저 배우는 파일 형식이다.

 

- 파이썬으로 CSV 파일 만들기

아래 예제는 이름과 나이, 지역 데이터를 CSV 파일로 저장하는 가장 기본적인 코드다.

import csv

rows = [
    ["이름", "나이", "지역"],
    ["민수", 27, "서울"],
    ["지은", 31, "부산"],
    ["현우", 29, "대전"]
]

with open("people.csv", "w", newline="", encoding="utf-8-sig") as file:
    writer = csv.writer(file)
    writer.writerows(rows)

print("people.csv 파일 저장 완료")

 

- 코드 설명

  1. import csv로 CSV 전용 모듈을 불러온다.
  2. rows에 저장할 데이터를 리스트로 준비한다.
  3. open(..., "w")로 쓰기 모드로 파일을 연다.
  4. newline=""은 빈 줄이 생기는 문제를 막아준다.
  5. encoding="utf-8-sig"는 엑셀에서 한글이 깨질 확률을 줄여준다.
  6. writerows()로 여러 줄을 한 번에 저장한다.

 

- 저장 결과

위 코드를 실행하면 같은 폴더에 people.csv 파일이 생성된다.

파일을 열면 아래와 비슷한 형태로 저장된다.

이름,나이,지역
민수,27,서울
지은,31,부산
현우,29,대전

 

- 자주 하는 실수

  • encoding을 지정하지 않아 한글이 깨지는 경우
  • newline=""을 안 넣어서 줄 사이에 빈 줄이 생기는 경우
  • list 대신 문자열 하나만 넘겨서 한 글자씩 쪼개지는 경우

 

- 이런 경우에 많이 씁니다

회원 목록 저장

주문 데이터 저장

크롤링 결과 저장

엑셀로 넘길 중간 파일 만들기

 

- 정리하며

파이썬 CSV 파일 만들기는 문법이 어렵지 않다.

핵심은 csv 모듈을 사용하고 newline과 encoding을 제대로 넣는 것이다.

이 기본만 익혀두면 이후 CSV 읽기와 합치기까지 훨씬 쉽게 이어갈 수 있다.

반응형

+ Recent posts