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
모듈을 활용하여 객체를 파일에 저장하고 불러오는 방법도 보여줍니다.
'언어 > Python' 카테고리의 다른 글
[ Python ] struct를 사용해서 little/big endian으로 파일 읽고 쓰기 (0) | 2024.08.13 |
---|---|
[ Python ] struct 패키지로 바이너리 데이터 다루기 (0) | 2024.08.12 |
[ Python ] with로 파일 자원 관리 하면서 파일 읽기 (0) | 2024.08.07 |
[ Python ] re.Scanner를 이용해서 RPN 계산기 만들기 (0) | 2024.08.02 |
[ Python ] re.split() 사용하기 (0) | 2024.08.02 |