본문 바로가기
파이썬기초(Python Basic)

파이썬에서 파일 입출력 이해하기

by 친절한에릭 2023. 4. 29.

안녕하세요!  파이썬에서 파일 입출력은 데이터 처리 및 저장에 필수적인 기술입니다. 파일 입출력은 파일을 읽어들여 데이터를 처리하거나, 결과를 파일에 저장하는 등의 작업을 수행할 때 자주 사용됩니다. 이번 글에서는 파이썬에서 파일 입출력을 다루는 방법에 대해 알아보겠습니다.

 

파이썬 파일 입출력의 기본

파이썬에서 파일을 다루기 위해서는 파일 객체를 생성해야 합니다. 이를 위해 파이썬의 내장 함수인 open() 함수를 사용합니다. open() 함수는 파일 이름과 파일 열기 모드를 인자로 받아 파일 객체를 반환합니다.

 

file = open("example.txt", "r")

 

파이썬의 내장 함수를 사용한 파일 입출력

 

파이썬에서 파일 입출력을 할 때 자주 사용되는 내장 함수들은 다음과 같습니다.

  • read(): 파일의 내용을 읽어옵니다.
  • write(): 파일에 데이터를 씁니다.
  • close(): 파일을 닫습니다.

이제 텍스트 파일, 이진 파일, 그리고 CSV 파일을 다루는 방법을 알아봅시다.

파이썬으로 텍스트 파일 다루기

텍스트 파일 읽기

텍스트 파일을 읽어오기 위해서는 다음과 같이 파일을 열고, read() 함수를 사용합니다.

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

위 예제에서는 with 문을 사용하여 파일을 열고 닫는 과정을 자동화하였습니다. encoding 인자를 통해 파일의 인코딩을 지정할 수 있습니다.

 

텍스트 파일 쓰기

텍스트 파일에 쓰기 위해서는 다음과 같이 파일을 열고, write() 함수를 사용합니다.

with open("example.txt", "w", encoding="utf-8") as file:
    file.write("안녕하세요, 파이썬 파일 입출력 예제입니다.")

텍스트 파일에서 데이터 처리

텍스트 파일에서 데이터를 처리하기 위해서는 파일의 내용을 읽어와서 적절한 처리를 수행한 후, 결과를 다시 파일에 저장하는 과정을 거칩니다.

예를 들어, 텍스트 파일에 있는 모든 단어의 개수를 세는 예제는 다음과 같이 작성할 수 있습니다.

with open("example.txt", "r", encoding="utf-8") as file:
    content = file.read()
    words = content.split()
    word_count = len(words)
print(f"단어 개수: {word_count}")

텍스트 파일 예제

예제를 통해 텍스트 파일을 다루는 방법을 살펴보겠습니다.

예를 들어, 텍스트 파일에 저장된 영화 평점 데이터를 읽어와서 평균 평점을 계산하는 예제는 다음과 같이 작성할 수 있습니다.

with open("ratings.txt", "r", encoding="utf-8") as file:
    ratings = [float(line.strip()) for line in file]
    average_rating = sum(ratings) / len(ratings)
print(f"평균 평점: {average_rating:.1f}")

 

파이썬으로 이진 파일 다루기

이진 파일이란?

이진 파일은 텍스트가 아닌 데이터를 저장한 파일입니다. 예를 들어, 이미지 파일, 동영상 파일, 오디오 파일 등이 이진 파일에 해당합니다.

이진 파일 읽기

이진 파일을 읽어오기 위해서는 다음과 같이 파일을 열고, read() 함수를 사용합니다. 이때, 파일 열기 모드를 ''rb''로 지정하여 이진 파일임을 나타냅니다.

with open("example.bin", "rb") as file:
    content = file.read()

이진 파일 쓰기

이진 파일에 쓰기 위해서는 다음과 같이 파일을 열고, write() 함수를 사용합니다. 이때, 파일 열기 모드를 ''wb''로 지정하여 이진 파일임을 나타냅니다.

with open("example.bin", "wb") as file:
    file.write(b'\\x00\\x01\\x02\\x03')

 

이진 파일 예제

이제 예제를 통해 이진 파일을 다루는 방법을 살펴보겠습니다.

예를 들어, 이진 파일로 저장된 이미지 파일의 크기를 확인하는 예제는 다음과 같이 작성할 수 있습니다.

 

import os

file_path = "example.jpg"
file_size = os.path.getsize(file_path)

print(f"이미지 파일 크기: {file_size} 바이트")

 

파이썬에서 CSV 파일 다루기

CSV 파일이란?

CSV(Comma-Separated Values) 파일은 콤마(,)로 구분된 값들을 저장한 텍스트 파일입니다. 표 형식의 데이터를 나타내는데 사용되며, 스프레드시트나 데이터베이스 소프트웨어로 쉽게 읽고 쓸 수 있습니다.

CSV 파일 읽기

CSV 파일을 읽어오기 위해서는 csv 모듈을 사용합니다. 다음과 같이 파일을 열고, csv.reader() 함수를 사용하여 CSV 파일을 읽어올 수 있습니다.

 

import csv

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

 

CSV 파일 쓰기

CSV 파일에 쓰기 위해서는 csv 모듈을 사용합니다. 다음과 같이 파일을 열고, csv.writer() 함수를 사용하여 CSV 파일에 데이터를 쓸 수 있습니다.

 

import csv

data = [
    ["이름", "나이", "성별"],
    ["홍길동", 30, "남"],
    ["김영희", 25, "여"]
]

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

 

CSV 파일 예제

실용적이고 재미있는 예제를 통해 CSV 파일을 다루는 방법을 살펴봅시다.

예를 들어, CSV 파일에 저장된 상품 데이터를 읽어와서 총 매출액을 계산하는 예제는 다음과 같이 작성할 수 있습니다.

 

import csv

total_sales = 0

with open("sales.csv", "r", encoding="utf-8") as file:
    reader = csv.reader(file)
    next(reader)  # 헤더 행 건너뛰기
    for row in reader:
        quantity = int(row[1])
        price = float(row[2])
        total_sales += quantity * price

print(f"총 매출액: {total_sales:.2f}원")

 

주식 데이터를 CSV 파일로부터 불러와 간단한 이동 평균선을 구하는 예제를 작성할 수 있습니다. 이 예제에서는 pandas 라이브러리와 matplotlib 라이브러리를 사용합니다.

 

먼저, pandasmatplotlib 라이브러리를 설치합니다.

pip install pandas matplotlib

다음으로 야후 파이낸스에서 애플 주식 데이터를 가져와 CSV 파일(AAPL_stock_data.csv)로 저장합니다. 이 CSV 파일은 다음과 같은 형식으로 작성되어 있습니다.

 

애플주식데이터

이제 주식 데이터를 불러와 이동 평균선을 구하는 코드를 작성합니다.

 

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# 야후 파이낸스에서 주식 데이터를 가져옵니다.
stock = yf.Ticker("AAPL")
data = stock.history(start="2020-01-01", end="2021-01-01")

# CSV 파일로 저장
data.to_csv("AAPL_stock_data.csv")

# 저장한 CSV 파일을 불러옵니다.
data = pd.read_csv("AAPL_stock_data.csv", index_col="Date", parse_dates=True)

# 5일 이동 평균선 구하기
data["SMA_5"] = data["Close"].rolling(window=5).mean()

# 20일 이동 평균선 구하기
data["SMA_20"] = data["Close"].rolling(window=20).mean()

# 차트 그리기
plt.figure(figsize=(12, 6))
plt.plot(data["Close"], label="Close")
plt.plot(data["SMA_5"], label="SMA_5")
plt.plot(data["SMA_20"], label="SMA_20")
plt.legend()
plt.title("AAPL Stock Price with SMA")
plt.show()

 

실행 결과

 

애플주가이동평균선그래프

 

위 예제에서는 pandas를 사용하여 주식 데이터를 포함한 CSV 파일을 불러오고, 이를 바탕으로 5일 이동 평균선과 20일 이동 평균선을 구한 후, 이를 matplotlib를 사용하여 그래프로 나타냈습니다.

이처럼 파이썬을 활용하면 CSV 파일 입출력과 관련된 금융 데이터 및 데이터 분석 작업을 수행할 수 있습니다. 이러한 기술을 익히면 금융 데이터 분석 및 처리에 큰 도움이 될 것입니다.

 

이번에는 캐글에서 제공하는 유명한 데이터셋 중 하나인 타이타닉 데이터를 활용하여 생존자를 분석하는 예제를 보여드리겠습니다. 이 예제에서는 pandasmatplotlib 라이브러리를 사용합니다.

먼저, pandasmatplotlib 라이브러리를 설치합니다.

 

pip install pandas matplotlib

 

다음으로 캐글에서 타이타닉 데이터셋을 다운로드 받습니다. (https://www.kaggle.com/c/titanic/data) 이 예제에서는 train.csv 파일만 사용합니다.

이제 타이타닉 데이터를 불러와서 간단한 분석을 수행하는 코드를 작성합니다.

 

import pandas as pd
import matplotlib.pyplot as plt

# 타이타닉 데이터를 포함한 CSV 파일을 불러옵니다.
titanic = pd.read_csv("train.csv")

# 성별에 따른 생존자 수를 계산합니다.
survived_gender = titanic.groupby("Sex")["Survived"].sum()

# 성별에 따른 생존자 수를 시각화합니다.
survived_gender.plot(kind="bar", title="Survivors by Gender")
plt.xlabel("Gender")
plt.ylabel("Number of Survivors")
plt.show()

# 객실 등급별 생존율을 계산합니다.
survived_pclass_ratio = titanic.groupby("Pclass")["Survived"].mean()

# 객실 등급별 생존율을 시각화합니다.
survived_pclass_ratio.plot(kind="bar", title="Survival Rate by Pclass")
plt.xlabel("Pclass")
plt.ylabel("Survival Rate")
plt.show()

 

위 예제에서는 pandas를 사용하여 타이타닉 데이터를 포함한 CSV 파일을 불러오고, 성별에 따른 생존자 수와 객실 등급별 생존율을 계산한 후, 이를 matplotlib를 사용하여 막대 그래프로 시각화했습니다.

이처럼 파이썬을 활용하면 캐글과 같은 사이트에서 제공하는 CSV 파일을 불러와서 데이터 분석을 수행할 수 있습니다. 이러한 기술을 익히면 데이터 분석 및 처리에 큰 도움이 될 것입니다.

 

결론

이 글에서는 파이썬에서 파일 입출력을 다루는 방법에 대해 알아보았습니다. 텍스트 파일, 이진 파일, 그리고 CSV 파일을 읽고 쓰는 방법과 이를 활용한 실용적이고 재미있는 예제들을 살펴보았습니다. 이를 통해 데이터 처리와 관련된 다양한 작업을 수행할 수 있습니다. 파이썬을 활용하여 파일 입출력을 능숙하게 다루게 되면, 여러분의 프로젝트에 큰 도움이 될 것입니다.

 

자주 묻는 질문

  1. Q: 파일 입출력에서 'with' 구문은 왜 사용하나요?
    • A: 'with' 구문을 사용하면 파일을 열고 닫는 과정을 자동화할 수 있습니다. 파일을 열 때 발생할 수 있는 예외 처리와 파일을 닫는 과정을 간편하게 처리할 수 있습니다.
  2. Q: 이진 파일과 텍스트 파일의 차이점은 무엇인가요?
    • A: 텍스트 파일은 사람이 읽을 수 있는 문자로 이루어진 파일입니다. 반면 이진 파일은 텍스트가 아닌 데이터를 저장한 파일로, 이미지 파일, 동영상 파일, 오디오 파일 등이 해당됩니다.
  3. Q: CSV 파일 대신에 엑셀 파일을 다루려면 어떻게 해야 하나요?
    • A: 엑셀 파일을 다루려면 **openpyxl**이나 **pandas**와 같은 외부 라이브러리를 사용해야 합니다. 이 라이브러리들을 설치한 후에 엑셀 파일을 읽고 쓸 수 있습니다.
  4. Q: 파이썬에서 파일 입출력에 사용되는 다양한 모드는 무엇인가요?
    • A: 파이썬에서 파일 입출력에 사용되는 모드에는 다음과 같은 것들이 있습니다.
      • 'r': 읽기 모드
      • 'w': 쓰기 모드
      • 'a': 추가 모드
      • 'x': 새 파일 쓰기 모드
      • 'b': 이진 모드
  5. Q: 파일 입출력 과정에서 인코딩 문제가 발생했을 때, 어떻게 해결하나요?
    • A: 파일 입출력 과정에서 인코딩 문제가 발생하면, encoding 인자를 사용하여 파일의 인코딩을 지정해 줄 수 있습니다. 대부분의 경우에는 'utf-8' 인코딩을 사용하면 문제가 해결됩니다.

파이썬 파일 입출력

댓글