Please Enable JavaScript!
Gon[ Enable JavaScript ]

파이썬 Python 파일 입출력 (File I/O) 사용하기

파이썬 Python
반응형

파이썬에서는 파일을 읽고 쓰기 위해 파일 입출력 기능을 제공합니다. 파일을 다루기 위해서는 파일을 열고(open()), 읽거나 쓰는 작업을 수행한 뒤 파일을 닫아야 합니다. 파일 입출력은 텍스트 파일과 바이너리 파일 모두를 지원하며, 다양한 모드를 사용해 데이터를 입출력할 수 있습니다.

 


1. 파일 열기 (open() 함수)

파일을 사용하기 위해서는 먼저 파일을 열어야 합니다. open() 함수는 파일을 열고, 파일 객체를 반환합니다.

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

설명: open() 함수의 첫 번째 인자는 파일 경로, 두 번째 인자는 파일 모드를 나타냅니다.

주요 파일 모드

  • "r": 읽기 모드 (파일이 존재하지 않으면 오류 발생)
  • "w": 쓰기 모드 (파일이 존재하지 않으면 새로 생성, 기존 파일이 있으면 내용 삭제)
  • "a": 추가 모드 (파일이 존재하지 않으면 새로 생성, 파일 끝에 내용 추가)
  • "r+": 읽기/쓰기 모드
  • "b": 바이너리 모드 (ex. "rb", "wb"로 사용하여 바이너리 파일 읽기/쓰기)

2. 파일 닫기 (close() 함수)

파일을 모두 사용한 후에는 close() 메서드를 사용하여 파일을 닫아야 합니다. 닫지 않으면 데이터 손실이나 메모리 누수가 발생할 수 있습니다.

file = open("example.txt", "r")
# 파일 읽기 작업 수행
file.close()


3. with 문을 사용한 파일 열기

파일 작업 시 with 문을 사용하면, 작업이 끝난 후 자동으로 파일이 닫힙니다. 이 방법은 안전하며, 파일을 닫지 않아 발생하는 오류를 방지합니다.

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

설명: with 블록이 종료되면 자동으로 file.close()가 호출됩니다.


4. 파일 읽기

파이썬은 파일을 읽기 위해 다양한 메서드를 제공합니다.

🔹 read() 메서드

파일 전체를 문자열로 읽습니다.

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

설명: read()는 파일의 전체 내용을 읽어 하나의 문자열로 반환합니다.

🔹 readline() 메서드

파일의 한 줄씩 읽습니다.

with open("example.txt", "r") as file:
    line = file.readline()
    while line:
        print(line.strip())  # 각 줄의 공백 제거
        line = file.readline()

설명: readline()은 호출할 때마다 한 줄씩 읽습니다. 파일 끝에 도달하면 빈 문자열을 반환합니다.

🔹 readlines() 메서드

파일의 모든 줄을 읽어 리스트로 반환합니다.

with open("example.txt", "r") as file:
    lines = file.readlines()
    for line in lines:
        print(line.strip())

설명: readlines()는 파일의 각 줄을 요소로 가지는 리스트를 반환합니다.


5. 파일 쓰기

파일에 데이터를 쓰려면 쓰기 모드("w" 또는 "a")로 파일을 열어야 합니다.

🔹 write() 메서드

문자열을 파일에 씁니다.

with open("example.txt", "w") as file:
    file.write("Hello, World!\\\\n")
    file.write("This is a new line.")

설명: write()는 지정한 문자열을 파일에 작성합니다. 새 줄을 추가하려면 \\\\n을 사용해 줄바꿈을 명시적으로 넣어야 합니다.

🔹 writelines() 메서드

리스트의 각 요소를 파일에 씁니다.

lines = ["First line\\\\n", "Second line\\\\n", "Third line\\\\n"]
with open("example.txt", "w") as file:
    file.writelines(lines)

설명: writelines()는 리스트에 저장된 여러 줄을 한 번에 파일에 씁니다. 각 요소가 개별 줄로 처리됩니다.


6. 파일에 내용 추가하기 (a 모드)

추가 모드("a")를 사용하면 기존 파일 내용이 유지된 채 파일의 끝에 데이터를 추가할 수 있습니다.

with open("example.txt", "a") as file:
    file.write("\\\\nThis is an appended line.")

설명: "a" 모드를 사용하면 파일이 이미 존재할 때, 기존 내용에 영향을 주지 않고 파일 끝에 문자열을 추가합니다.


7. 파일 포인터 위치 제어

파일 포인터는 파일에서 읽기나 쓰기를 할 때 위치를 가리킵니다. seek()와 tell() 메서드를 사용하여 포인터의 위치를 제어할 수 있습니다.

🔹 seek(offset, whence)

파일 포인터의 위치를 이동합니다.

  • offset: 이동할 바이트 수
  • whence: 기준 위치 (0: 파일 시작, 1: 현재 위치, 2: 파일 끝)
with open("example.txt", "r") as file:
    file.seek(5)  # 파일의 5바이트 위치로 이동
    content = file.read()
    print(content)

설명: seek(5)를 사용하여 파일의 5번째 바이트 위치부터 읽습니다.

🔹 tell()

현재 파일 포인터의 위치를 반환합니다.

with open("example.txt", "r") as file:
    print(file.tell())  # 파일 포인터의 현재 위치
    file.read(5)
    print(file.tell())  # 5바이트 읽은 후 위치

설명: tell()은 파일 내 현재 위치를 반환합니다.


8. 바이너리 파일 읽기 및 쓰기

바이너리 파일을 다룰 때는 "rb"(읽기), "wb"(쓰기) 모드를 사용합니다. 주로 이미지나 동영상, 오디오 파일과 같은 비텍스트 파일을 다룰 때 사용됩니다.

# 바이너리 파일 읽기 예제
with open("image.png", "rb") as file:
    content = file.read()
    print(content[:10])  # 파일의 첫 10바이트를 출력

# 바이너리 파일 쓰기 예제
with open("copy_image.png", "wb") as file:
    file.write(content)

설명: "rb" 모드는 바이너리 파일을 읽고, "wb" 모드는 바이너리 파일을 씁니다. 위 예제는 image.png 파일을 읽어 copy_image.png 파일에 복사합니다.


9. 파일 예외 처리

파일 작업 중 파일이 없거나 권한 문제가 발생할 수 있으므로 예외 처리를 통해 오류를 방지할 수 있습니다.

try:
    with open("nonexistent.txt", "r") as file:
        content = file.read()
except FileNotFoundError:
    print("파일이 존재하지 않습니다.")
except IOError:
    print("파일 입출력 오류가 발생했습니다.")

설명: FileNotFoundError 예외는 파일이 없을 때 발생하고, IOError는 입출력 작업 중 오류가 발생할 때 처리합니다.

 

파이썬의 파일 입출력 기능을 사용하면 텍스트 파일 및 바이너리 파일을 읽고 쓸 수 있으며, 파일 작업을 안전하게 수행할 수 있도록 다양한 기능을 제공합니다. 파일 입출력 작업을 수행할 때는 항상 파일을 열고 닫는 작업을 철저히 관리해야 합니다. with 문을 사용하면 파일을 안전하고 간편하게 다룰 수 있습니다.

반응형
Posted by 녹두장군1
,