일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 장고
- 파이썬강의
- 도커
- 도커 컴포즈
- flask
- 파이썬
- 파이썬 장고
- 쇼핑몰예제
- ADP
- c
- c++
- 기초강의
- 개발언어
- 웹개발
- 에어플로우 기초강의
- Django
- 개발자취업
- cpp
- mlops
- 플라스크
- 인공지능
- 장고 기초 강의
- Python
- 장고 튜토리얼
- docker
- C언어
- 프로그래밍
- 예제프로젝트
- 개발자
- airflow
- Today
- Total
TITEDIOS Dev Note
Python 기초강의: #19 파일 처리(2) - 텍스트 파일과 이진 파일 본문

파일 입출력은 프로그래밍에서 매우 중요한 부분을 차지합니다. 파이썬에서는 텍스트 파일과 이진 파일을 간편하게 다룰 수 있는 다양한 기능을 제공합니다. 이번 포스팅에서는 텍스트 파일과 이진 파일을 다루는 방법을 각각 예제와 함께 설명하겠습니다.
1. 텍스트 파일 다루기
텍스트 파일을 다루는 방법은 우리가 이전에 파일 입출력(바로 전 포스팅입니다ㅎㅎ)에서 봤던 예제와 같습니다. 파일을 열 때 open 함수에 'r'. 'w', 'a' 등의 모드를 파라미터로 전달하여 파일을 처리하는 방식입니다. 테스트 파일은 우리가 읽기 편한 문자열을 처리하는 함수이므로 데이터 저장 및 로그 기록 등에 많이 사용됩니다.
텍스트 파일 읽기
텍스트 파일을 읽는 방법은 매우 간단합니다. open 함수와 read 또는 readlines 메서드를 사용하면 됩니다. 문자열을 저장하는 데 인코딩이 필요합니다. 인코딩은 본 포스팅의 범위를 넘기 때문에 간단하게 설명하면, 일종의 약속으로 특정 이진수 X를 문자열 Y로 대응시키는 방법입니다. 예제에서는 UTF-8 방식을 사용하겠습니다.
# 텍스트 파일 읽기 예제
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
이 코드는 example.txt 파일을 열고, 파일의 내용을 모두 읽어서 출력합니다. with 구문을 사용하면 파일을 자동으로 닫아주기 때문에 권장되는 방법입니다.
텍스트 파일 쓰기
텍스트 파일에 데이터를 쓰는 것도 매우 간단합니다. open 함수에 'w' 또는 'a' 모드를 사용하면 됩니다.
# 텍스트 파일 쓰기 예제
with open('example.txt', 'w', encoding='utf-8') as file:
file.write('Hello, World!\n')
file.write('This is a new line.\n')
이 코드는 example.txt 파일을 열고, 두 줄의 텍스트를 씁니다. 'w' 모드는 파일을 새로 쓰기 때문에 기존 내용을 모두 지우고 새로운 내용을 씁니다. 기존 내용에 추가하려면 'a' 모드를 사용합니다.
2. 이진 파일 다루기
우리가 사용하는 컴퓨터는 본질적으로 0과 1의 이진수를 다루는 기계입니다. 따라서 0과 1로만 이루어진 데이터를 처리하는 것이 빠르고 정확할 수 밖에 없습니다. 따라서 데이터 처리를 빠르고 효율적으로 하기 위해서 이진 파일을 다루는 것이 요구됩니다. 이진 파일의 장점은 아래와 같습니다.
1) 효율성: 이진 파일은 텍스트 파일에 비해 더 적은 공간을 차지하며, 이는 데이터를 더 작은 크기로 저장하고 빠른 입출력을 가능하게 합니다. 특히 대용량 데이터를 다룰 때 효과적입니다.
2) 속도: 네트워크 통신 등 속도가 중요한 작업의 경우 이진 파일을 사용하면 데이터 직렬화와 역직렬화 과정에서 생기는 오버헤드가 적습니다.
3) 구조화된 데이터 저장: 복잡한 데이터 구조를 쉽게 저장할 수 있습니다. 객체, 배열, 구조체 등의 데이터를 그대로 파일에 저장하고 읽을 수 있어 프로그램의 효율성을 높입니다.
이진 파일 읽기
이진 파일은 텍스트 파일과 달리 바이트 단위로 데이터를 읽고 씁니다. open 함수에 'rb' 모드를 사용하여 이진 파일을 읽을 수 있습니다. 모드가 'r' 이 아니라 'rb'가 된 점을 주의해서 살펴봅시다.
# 이진 파일 읽기 예제
with open('example.bin', 'rb') as file:
binary_data = file.read()
print(binary_data)
이 코드는 example.bin 파일을 열고, 파일의 내용을 바이트로 읽어옵니다.
이진 파일 쓰기
이진 파일에 데이터를 쓰려면 open 함수에 'wb' 모드를 사용합니다. 역시 'w'가 아닌 'wb' 모드를 사용했다는 점이 눈에 띕니다.
# 이진 파일 쓰기 예제
with open('example.bin', 'wb') as file:
binary_data = b'\x00\xFF\x00\xFF'
file.write(binary_data)
이 코드는 example.bin 파일을 열고, 바이트 데이터를 씁니다.
3. 파일 처리 예제
텍스트 파일과 이진 파일를 상호 변환하는 예제를 살펴보겠습니다. 변환을 위해 이진 데이터를 텍스트 테이터로 인코딩하기 위해 UTF-8 형식을 이용해 변환을 수행합니다.
텍스트 파일을 이진 파일로 변환
텍스트 파일을 이진 파일로 변환하는 예제를 보겠습니다.
# 텍스트 파일을 이진 파일로 변환하는 예제
with open('example.txt', 'r', encoding='utf-8') as text_file:
text_content = text_file.read()
with open('example.bin', 'wb') as binary_file:
binary_content = text_content.encode('utf-8')
binary_file.write(binary_content)
이 코드는 텍스트 파일을 읽어서 UTF-8 인코딩으로 이진 파일로 변환하여 저장합니다.
이진 파일을 텍스트 파일로 변환
이진 파일을 다시 텍스트 파일로 변환하는 예제입니다.
# 이진 파일을 텍스트 파일로 변환하는 예제
with open('example.bin', 'rb') as binary_file:
binary_content = binary_file.read()
with open('example_converted.txt', 'w', encoding='utf-8') as text_file:
text_content = binary_content.decode('utf-8')
text_file.write(text_content)
이 코드는 이진 파일을 읽어서 UTF-8 디코딩으로 텍스트 파일로 변환하여 저장합니다.
결론
파이썬에서는 텍스트 파일과 이진 파일을 매우 쉽게 다룰 수 있습니다. 텍스트 파일은 문자열로, 이진 파일은 바이트로 처리하면 됩니다. 이 포스팅에서는 파일을 읽고 쓰는 기본적인 방법과 파일 형식을 변환하는 예제를 살펴보았습니다. 파일 입출력에 익숙해지면 데이터를 처리하고 저장하는 다양한 응용 프로그램을 개발할 수 있습니다.
추가적으로 리눅스 운영체제는 파일을 기반으로 동작하는 운영체제입니다. 이말은 리눅스는 파일 처리를 효율적으로 제공하고 파일을 이용해 이 일, 저 일 처리하기 쉽다는 말이 됩니다. 따라서, 파이썬이 제공하는 파일 입출력 기능을 통해 여러분은 많은 작업들, 많은 기능들을 수행할 수 있습니다. 그것도 효율적으로요. 앞으로 파일을 기록하고 불러오는 기능을 개발할 기회가 많을 것입니다. 이 포스팅이 도움이 되셨으면 좋겠습니다.
감사합니다!
'파이썬' 카테고리의 다른 글
Python 기초강의: #21 정규 표현식(1) - 기본 문법 (0) | 2024.07.13 |
---|---|
Python 기초강의: #20 파일 처리(3) - 파일 처리와 예외 처리 (0) | 2024.07.12 |
Python 기초강의: #18 파일 처리(1) - 파일 읽기와 쓰기 (0) | 2024.07.10 |
Python 기초강의: #17 데이터 구조 - 세트(set) (1) | 2024.07.09 |
Python 기초강의: #16 데이터 구조 - 딕셔너리(Dictonary) (0) | 2024.07.08 |