IT/파이썬

[파이썬 강의] 파일 입출력, 예외 처리, 객체지향 프로그래밍(OOP) 기초

porodaram 2025. 1. 18. 22:22
반응형

파이썬에서는 파일 입출력을 통해 데이터를 저장하거나 읽어오는 작업을 간단하게 처리할 수 있습니다. 이번 섹션에서는 텍스트 파일 및 CSV 파일 다루기와 관련된 기초 개념과 실습 예제를 소개하겠습니다.


텍스트 파일 읽고 쓰기

open(), read(), write(), close()

파이썬의 open() 함수는 파일을 열어 읽기 또는 쓰기 작업을 수행할 수 있도록 도와줍니다.

파일 쓰기

# 파일 쓰기
data = "Hello, Python!\nWelcome to file I/O."
with open("example.txt", "w") as file:
    file.write(data)

설명: "w" 모드는 파일을 쓰기 전용으로 열며, 파일이 존재하지 않으면 생성됩니다.

파일 읽기

# 파일 읽기
with open("example.txt", "r") as file:
    content = file.read()
    print(content)

설명: "r" 모드는 파일을 읽기 전용으로 엽니다. 파일의 전체 내용을 읽어 문자열로 반환합니다.

파일에 줄 단위로 쓰고 읽기

# 여러 줄 쓰기
lines = ["Line 1", "Line 2", "Line 3"]
with open("lines.txt", "w") as file:
    file.writelines(line + "\n" for line in lines)

# 줄 단위로 읽기
with open("lines.txt", "r") as file:
    for line in file:
        print(line.strip())

결과:

Line 1
Line 2
Line 3

CSV 파일 다루기

CSV(Comma-Separated Values)는 데이터를 표 형식으로 저장하는 텍스트 파일 형식입니다. 파이썬의 csv 모듈을 사용하면 쉽게 다룰 수 있습니다.

CSV 파일 쓰기

import csv

# 데이터 준비
data = [
    ["Name", "Age", "City"],
    ["Alice", 30, "New York"],
    ["Bob", 25, "Los Angeles"],
    ["Charlie", 35, "Chicago"]
]

# 파일에 쓰기
with open("people.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(data)

CSV 파일 읽기

# 파일 읽기
with open("people.csv", "r") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

결과:

['Name', 'Age', 'City']
['Alice', '30', 'New York']
['Bob', '25', 'Los Angeles']
['Charlie', '35', 'Chicago']

7. 예외 처리

파이썬 프로그램은 실행 중 예상치 못한 에러를 만날 수 있습니다. 이를 방지하거나 처리하기 위해 예외 처리 기법을 사용합니다.

에러와 예외의 차이

  • 에러(Error): 문법적인 실수로 인해 발생하며, 컴파일 단계에서 발견됩니다.
  • 예외(Exception): 실행 중 발생하는 문제이며, 예외 처리를 통해 복구 가능합니다.

try-except 구문

try:
    x = int(input("Enter a number: "))
    result = 10 / x
    print("Result:", result)
except ValueError:
    print("Invalid input. Please enter a number.")
except ZeroDivisionError:
    print("Cannot divide by zero.")
finally:
    print("Execution complete.")

결과:

Enter a number: 0
Cannot divide by zero.
Execution complete.

예외 발생시키기

def validate_age(age):
    if age < 0:
        raise ValueError("Age cannot be negative!")

try:
    validate_age(-5)
except ValueError as e:
    print("Error:", e)

결과:

Error: Age cannot be negative!

8. 객체지향 프로그래밍(OOP) 기초

객체지향 프로그래밍(OOP)은 데이터와 해당 데이터를 조작하는 메서드를 하나의 단위로 묶는 프로그래밍 패러다임입니다.

클래스와 객체

  • 클래스: 객체를 생성하기 위한 설계도입니다.
  • 객체: 클래스의 인스턴스입니다.

클래스 정의 및 인스턴스 생성

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name}.")

# 객체 생성
person = Person("Alice", 30)
print(person.name, person.age)
person.greet()

결과:

Alice 30
Hello, my name is Alice.

상속과 다형성

class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

animals = [Dog(), Cat()]
for animal in animals:
    print(animal.speak())

결과:

Woof!
Meow!

마무리하며

이번 장에서는 파일 입출력, 예외 처리, 객체지향 프로그래밍의 기초를 학습했습니다. 파일 입출력은 데이터를 저장하고 불러오는 데 필수적이며, 예외 처리는 프로그램의 안정성을 높입니다. 마지막으로, 객체지향 프로그래밍은 파이썬의 강력한 기능 중 하나로, 코드 재사용성과 유지보수성을 크게 향상시킵니다. 다음 단계에서는 이러한 개념을 응용하여 더 복잡한 프로그램을 만들어보세요!

반응형