파일 입출력의 개념
파일 입출력은 파일 시스템을 통해 데이터를 읽고 쓰는 작업을 의미합니다.
이를 통해 프로그램은 데이터 영속성을 유지하고, 외부 데이터 소스와 연동하며, 대용량 데이터를 처리할 수 있습니다.
- 데이터 영속성 유지: 프로그램이 종료되더라도 데이터를 저장하고, 이후에 다시 사용할 수 있습니다.
- 외부 데이터 소스와의 연동: 파일 입출력을 통해 외부 파일에서 데이터를 읽어오거나, 데이터를 외부 파일에 저장할 수 있습니다.
- 대용량 데이터 처리: 메모리에 저장하기 힘든 대용량 데이터를 파일에 저장하고 처리할 수 있습니다.
With 문
with 문은 자원 관리가 필요한 코드 블록에서 사용되는 구문입니다.
- 코드의 가독성과 안전성을 높이며, 자원 해제를 자동으로 처리하여 코드의 안정성을 보장합니다.
- 특히 파일을 열고 닫는 작업을 자동으로 처리하며, 예외 발생 시에도 파일이 제대로 닫히도록 보장합니다.
with 문 기본 형태
with 표현식 as 변수:
코드 블록
파일 입출력에서 with 문 사용 예시
with open('example.txt', 'r') as file:
content = file.read()
print(content)
- with 문에서는 파일을 열고 닫는 작업을 자동으로 처리합니다.
- 그리고 예외가 발생하더라도 파일이 제대로 닫히도록 보장합니다.
- 또한 코드가 더 간결하고 가독성이 높아집니다.
Open 함수
open 함수는 파일을 열고 파일 객체를 반환하는 함수입니다.
Baseline Code
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Parameter
file: 열려는 파일의 경로와 이름을 지정합니다
mode: 파일을 여는 모드를 지정합니다. 기본값은 읽기 모드('r')입니다
'r': 읽기 모드
'w': 쓰기 모드 (기존 파일을 덮어씀)
'a': 추가 모드 (파일 끝에 데이터를 추가)
'b': 바이너리 모드
't': 텍스트 모드 (기본값)
encoding: 텍스트 모드에서 사용할 인코딩을 지정합니다 (예: 'utf-8')
Open 함수 Example
- 파일 읽기
with open('example.txt', 'r') as file:
content = file.read()
print(content)
- 파일 쓰기
with open('example.txt', 'w') as file:
file.write('Hello, World!')
- 파일 추가 쓰기
with open('example.txt', 'a') as file:
file.write('\nAppending this line.')
- 파일을 한 줄씩 읽기
with open('example.txt', 'r') as file:
for line in file:
print(line.strip()) # strip()을 사용하여 줄 끝의 개행 문자를 제거
파일 입출력
Mode
파일을 열 때 open 함수의 mode 매개변수를 사용하여 파일을 여는 모드를 지정할 수 있습니다.
- 'r': 읽기 모드 (기본값). 파일을 읽기 전용으로 엽니다. 파일이 존재하지 않으면 오류가 발생합니다.
- 'w': 쓰기 모드. 파일을 쓰기 전용으로 엽니다. 파일이 존재하지 않으면 새로 생성하고, 파일이 존재하면 기존 내용을 덮어씁니다.
- 'a': 추가 모드. 파일을 쓰기 전용으로 열고, 파일의 끝에 데이터를 추가합니다. 파일이 존재하지 않으면 새로 생성합니다.
- 'b': 이진 모드. 바이너리 파일을 읽거나 쓸 때 사용합니다.
- 예를 들어, 'rb'는 바이너리 읽기 모드, 'wb'는 바이너리 쓰기 모드입니다.
읽기 함수
파일에서 데이터를 읽을 때 사용하는 함수들입니다.
- read(): 파일 전체를 읽어들입니다.
with open('example.txt', 'r') as file:
content = file.read()
print(content)
- readline(): 파일에서 한 줄씩 읽어들입니다.
with open('example.txt', 'r') as file:
line = file.readline()
while line:
print(line.strip())
line = file.readline()
- readlines(): 파일 전체를 읽어 각 줄을 요소로 하는 리스트를 반환합니다.
with open('example.txt', 'r') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
쓰기 함수
파일에 데이터를 쓸 때 사용하는 함수들입니다.
- write(): 문자열을 파일에 씁니다.
with open('example.txt', 'w') as file:
file.write('Hello, World!')
- writelines(): 문자열 리스트를 파일에 씁니다.
lines = ['First line\n', 'Second line\n', 'Third line\n']
with open('example.txt', 'w') as file:
file.writelines(lines)
CSV 파일 처리
CSV(Comma-Separated Values)는 쉼표로 구분된 값들을 가지는 텍스트 파일 형식입니다.
CSV 파일은 데이터 교환의 표준 형식으로, 다양한 애플리케이션 간의 호환성 때문에 널리 사용됩니다.
CSV 모듈
- csv.reader는 CSV 파일을 읽어들입니다.
import csv
with open('example.csv', 'r', newline='') as file:
reader = csv.reader(file)
for row in reader:
print(row)
- csv.writer는 CSV 파일에 씁니다.
import csv
with open('example.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['name', 'age', 'city'])
writer.writerow(['Alice', 30, 'New York'])
writer.writerow(['Bob', 25, 'Los Angeles'])
- csv.DictReader는 딕셔너리 형태로 CSV 파일을 읽어들입니다.
import csv
with open('example.csv', 'r', newline='') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
- csv.DictWriter는 딕셔너리 형태로 CSV 파일에 씁니다.
import csv
with open('example.csv', 'w', newline='') as file:
fieldnames = ['name', 'age', 'city']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'name': 'Alice', 'age': 30, 'city': 'New York'})
writer.writerow({'name': 'Bob', 'age': 25, 'city': 'Los Angeles'})
Pandas 모듈
Pandas는 데이터 조작 및 분석을 위한 Python 라이브러리로, CSV 파일을 처리하는 데 매우 유용합니다.
- pandas.read_csv 함수는 CSV 파일을 읽어 데이터프레임으로 반환합니다.
import pandas as pd
df = pd.read_csv('example.csv')
print(df)
- pandas.DataFrame.to_csv 메서드는 데이터프레임을 CSV 파일로 저장합니다.
import pandas as pd
data = {
'name': ['Alice', 'Bob'],
'age': [30, 25],
'city': ['New York', 'Los Angeles']
}
df = pd.DataFrame(data)
df.to_csv('example.csv', index=False)
JSON 데이터 처리
JSON?
JSON(JavaScript Object Notation)은 가벼운 데이터 교환 형식으로, 사람과 기계 모두 읽기 쉬운 형식입니다
- JSON은 키-값 쌍으로 데이터를 구조화하며, 웹 애플리케이션과 서버 간의 데이터 교환에서 자주 사용됩니다.
- 데이터 교환: 웹 애플리케이션과 서버 간의 데이터 교환에서 JSON 형식을 자주 사용합니다.
- 구조화된 데이터 저장: JSON을 사용하면 복잡한 데이터 구조를 손쉽게 저장하고 불러올 수 있습니다.
JSON 모듈
Python의 json 모듈을 사용하여 JSON 데이터를 쉽게 처리할 수 있습니다.
- json.dumps() 는 Python 객체를 JSON 문자열로 변환합니다.
import json
data = {'name': 'Alice', 'age': 30, 'city': 'New York'}
json_string = json.dumps(data)
print(json_string)
# Output: {"name": "Alice", "age": 30, "city": "New York"}
- json.loads() 는 JSON 문자열을 Python 객체로 변환합니다.
import json
json_string = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_string)
print(data)
# Output: {'name': 'Alice', 'age': 30, 'city': 'New York'}
- json.dump() 는 Python 객체를 JSON 파일로 저장합니다.
import json
data = {'name': 'Alice', 'age': 30, 'city': 'New York'}
with open('data.json', 'w') as file:
json.dump(data, file)
- json.load() 는 JSON 파일을 Python 객체로 불러옵니다.
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data) # Output: {'name': 'Alice', 'age': 30, 'city': 'New York'}
'⌨️ Python & Algorithm' 카테고리의 다른 글
[Python] Module, Package, Virtual Environment (모듈, 패키지, 가상환경) (0) | 2024.07.15 |
---|---|
[Python] Database - 데이터베이스 (0) | 2024.07.15 |
[Python] Generator, Iterator, Yield (제너레이터, 이터레이터, Yield) (0) | 2024.07.15 |
[Python] Class & OOP (클래스 & 객체지향 프로그래밍) (0) | 2024.07.14 |
[Python] Python - Function (함수) (0) | 2024.07.14 |