본문 바로가기
Python 문법/Python 기본 문법(3.10 기준)

[python3.10 기본] 8. 파일 입출력

by cogito21_python 2024. 7. 1.
반응형

8.1 파일 열기, 읽기, 쓰기, 닫기

파일 열기

파일을 열기 위해서는 open() 함수를 사용합니다. 이 함수는 파일 경로와 모드를 인자로 받습니다. 모드에는 읽기 모드(r), 쓰기 모드(w), 추가 모드(a), 이진 모드(b), 텍스트 모드(t) 등이 있습니다.

# 파일 열기
file = open("example.txt", "r")  # 읽기 모드로 파일 열기

파일 읽기

파일을 읽는 방법에는 여러 가지가 있습니다. read(), readline(), readlines() 메소드를 사용합니다.

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

# 파일 한 줄 읽기
with open("example.txt", "r") as file:
    line = file.readline()
    print(line)

# 파일 모든 줄 읽기
with open("example.txt", "r") as file:
    lines = file.readlines()
    print(lines)

파일 쓰기

파일에 데이터를 쓰기 위해서는 write() 메소드를 사용합니다. 쓰기 모드(w)로 열면 기존 내용을 덮어쓰고, 추가 모드(a)로 열면 기존 내용에 추가합니다.

# 파일 쓰기
with open("example.txt", "w") as file:
    file.write("Hello, World!\n")

# 파일에 내용 추가
with open("example.txt", "a") as file:
    file.write("Append this line.\n")

파일 닫기

파일을 사용한 후에는 close() 메소드를 사용하여 파일을 닫아야 합니다. 파일을 닫지 않으면 데이터 손실이나 리소스 누수 등의 문제가 발생할 수 있습니다. 하지만, with 구문을 사용하면 파일을 자동으로 닫을 수 있습니다.

file = open("example.txt", "r")
content = file.read()
file.close()  # 파일 닫기

# with 구문을 사용하면 자동으로 파일을 닫음
with open("example.txt", "r") as file:
    content = file.read()

8.2 with 문을 사용한 파일 처리

with 구문을 사용하면 파일을 자동으로 열고 닫을 수 있어 코드가 더욱 간결해지고 안전합니다. with 구문을 사용하면 파일 처리가 끝난 후 자동으로 파일이 닫힙니다.

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

8.3 파일 경로와 디렉토리 조작 (os 모듈, pathlib 모듈)

os 모듈

os 모듈은 파일과 디렉토리를 조작하는 다양한 기능을 제공합니다.

import os

# 현재 작업 디렉토리 확인
print(os.getcwd())

# 디렉토리 변경
os.chdir("/path/to/directory")

# 디렉토리 내용 목록 확인
print(os.listdir("."))

# 디렉토리 생성
os.mkdir("new_directory")

# 파일 및 디렉토리 삭제
os.remove("example.txt")
os.rmdir("new_directory")

pathlib 모듈

pathlib 모듈은 객체 지향적 파일 시스템 경로를 제공합니다. Python 3.4부터 표준 라이브러리에 포함되었습니다.

from pathlib import Path

# 현재 작업 디렉토리 확인
current_dir = Path.cwd()
print(current_dir)

# 디렉토리 변경
os.chdir(current_dir / "subdir")

# 디렉토리 내용 목록 확인
for path in current_dir.iterdir():
    print(path)

# 디렉토리 생성
new_dir = current_dir / "new_directory"
new_dir.mkdir()

# 파일 및 디렉토리 삭제
file_path = current_dir / "example.txt"
file_path.unlink()  # 파일 삭제
new_dir.rmdir()  # 디렉토리 삭제

 

반응형