본문 바로가기

언어/Python

[ Python ] 파일 읽고 쓰기 함수 설명과 예제

반응형

Python에서 파일을 다룰 때 자주 사용하는 함수와 메서드에 대해 설명하고, 각각의 예제를 제공합니다. 파일 작업은 입출력(IO) 작업의 기본적인 부분이며, 이를 이해하고 활용하는 것이 중요합니다.

1. open()

설명: 파일을 열기 위해 사용하는 함수입니다. 파일을 읽기 모드, 쓰기 모드 등 다양한 모드로 열 수 있습니다.

문법:

open(filename, mode)
  • filename: 열 파일의 이름(경로 포함).
  • mode: 파일을 여는 모드. 기본값은 'r'(읽기 모드)입니다.

모드:

  • 'r': 읽기 모드(파일이 없으면 오류 발생).
  • 'w': 쓰기 모드(파일이 없으면 새로 생성, 있으면 덮어씀).
  • 'a': 추가 모드(파일이 없으면 새로 생성, 있으면 끝에 추가).
  • 'b': 바이너리 모드(텍스트 모드가 아닌 바이너리 모드로 파일을 엽니다).

예제:

file = open('example.txt', 'w')
file.write('Hello, World!')
file.close()

2. readline()

설명: 파일에서 한 줄씩 읽어들이는 메서드입니다. 읽어들인 내용에 줄 바꿈 문자(\n)가 포함됩니다.

예제:

with open('example.txt', 'r') as file:
    first_line = file.readline()
    print(first_line)

3. readlines()

설명: 파일의 모든 줄을 읽어 리스트로 반환하는 메서드입니다. 각 줄은 리스트의 하나의 요소가 됩니다.

예제:

with open('example.txt', 'r') as file:
    lines = file.readlines()
    print(lines)

4. read()

설명: 파일 전체 내용을 하나의 문자열로 읽어들이는 메서드입니다.

예제:

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

5. write()

설명: 파일에 문자열을 쓰는 메서드입니다. 파일이 이미 존재할 경우 기존 내용을 덮어씁니다.

예제:

with open('example.txt', 'w') as file:
    file.write('Hello, World!\nThis is a test.')

6. writelines()

설명: 문자열의 리스트를 파일에 한 번에 쓰는 메서드입니다. 각 문자열이 줄로 간주되며, 줄 바꿈 문자를 수동으로 추가해야 합니다.

예제:

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

7. writable()

설명: 파일 객체가 쓰기 모드인지 확인하는 메서드입니다. 쓰기가 가능한 경우 True를 반환합니다.

예제:

with open('example.txt', 'w') as file:
    print(file.writable())  # True 출력

8. seek()

설명: 파일 내에서 특정 위치로 파일 포인터를 이동시키는 메서드입니다.

문법:

file.seek(offset, whence)
  • offset: 이동할 바이트 수.
  • whence: 이동의 기준 (0은 파일의 시작, 1은 현재 위치, 2는 파일의 끝).

예제:

with open('example.txt', 'r') as file:
    file.seek(6)  # 6번째 바이트로 이동
    print(file.read())  # 'World!\nThis is a test.' 출력

9. seekable()

설명: 파일 객체가 임의 접근(seek)을 지원하는지 확인하는 메서드입니다.

예제:

with open('example.txt', 'r') as file:
    print(file.seekable())  # True 출력

10. tell()

설명: 현재 파일 포인터의 위치를 반환하는 메서드입니다. 파일의 시작부터 몇 바이트 떨어져 있는지를 나타냅니다.

예제:

with open('example.txt', 'r') as file:
    file.read(5)
    print(file.tell())  # 5 출력

11. close()

설명: 파일을 닫는 메서드입니다. 파일 작업이 끝난 후 항상 호출해야 합니다. with 구문을 사용할 경우 자동으로 호출됩니다.

예제:

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

12. dump(), dumps(), load()

이 함수들은 파일을 직접적으로 다루기보다는, pickle 모듈을 사용하여 파이썬 객체를 파일에 저장하거나 파일로부터 불러올 때 사용됩니다.

  • dump(): 파이썬 객체를 파일에 저장합니다.
  • dumps(): 파이썬 객체를 문자열 형태로 직렬화합니다.
  • load(): 파일로부터 파이썬 객체를 읽어옵니다.

예제:

import pickle

# 객체를 파일에 저장
data = {'name': 'John', 'age': 30}
with open('data.pkl', 'wb') as file:
    pickle.dump(data, file)

# 파일로부터 객체 불러오기
with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)
    print(loaded_data)  # {'name': 'John', 'age': 30} 출력

종합 예제

이제 위에서 설명한 여러 함수를 활용하여 파일을 생성하고, 내용을 읽고 쓰는 종합적인 예제를 만들어 보겠습니다.

import pickle

# 파일 쓰기
with open('example.txt', 'w') as file:
    file.write('First line\n')
    file.write('Second line\n')
    file.writelines(['Third line\n', 'Fourth line\n'])

# 파일 읽기
with open('example.txt', 'r') as file:
    print(file.read())  # 전체 내용을 출력

# 파일 임의 접근
with open('example.txt', 'r') as file:
    file.seek(11)  # 'Second line\n'의 시작으로 이동
    print(file.readline())  # 'Second line\n' 출력

# 파이썬 객체를 파일에 저장
data = {'key1': 'value1', 'key2': 'value2'}
with open('data.pkl', 'wb') as file:
    pickle.dump(data, file)

# 파일로부터 객체 불러오기
with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)
    print(loaded_data)  # {'key1': 'value1', 'key2': 'value2'} 출력

이 예제에서는 다양한 파일 작업과 함께 pickle 모듈을 활용하여 객체를 파일에 저장하고 불러오는 방법도 보여줍니다.

반응형