파이썬 - 파일 읽기: 초보자 가이드
안녕하세요, 미래의 파이썬 마에스토들! ? 오늘은 파이썬의 파일 처리 세계로 흥미진진한 여정을 떠날 거예요. 친절한 이웃 컴퓨터 교사로서, 여러분을 파일 읽기의 맛과 끝 모를 세계를 안내해 드릴 거예요. 코드를 한 줄도 작성한 적이 없다고 해도 걱정하지 마세요 – 맨 처음부터 시작해서 점점 더 복잡하게 쌓아갈 거예요. 그럼, 좋아하는 음료를 들고 편하게 앉아서 시작해 볼까요?
파일을 읽기 위해 열기
파일을 읽기 전에는 파일을 열어야 합니다. 이를 마치 집에 들어가기 전에 문을 노크하는 것과 같이 생각해 봅시다. 파이썬에서는 open()
함수를 사용하여 이를 수행합니다. 간단한 예제를 시작해 봅시다:
file = open("hello.txt", "r")
다음이 일어나고 있습니다:
-
open()
는 파일을 열 때 사용하는 함수입니다 -
"hello.txt"
는 열고 싶은 파일의 이름입니다 -
"r"
는 읽기 모드로 파일을 열었음을 의미합니다
끝날 때마다 파일을 닫는 것을 잊지 마세요:
file.close()
read() 메서드를 사용하여 파일 읽기
이제 파일을 열었으니, 내용을 읽어 볼 차례입니다. read()
메서드는 마치 전자기기처럼 파일의 모든 내용을 한 번에 흡수합니다. 이렇게 사용하면 됩니다:
file = open("hello.txt", "r")
content = file.read()
print(content)
file.close()
이 코드는 파일의 모든 내용을 인쇄합니다. 간단하지만, 큰 파일은 주의하세요 – 컴퓨터의 메모리를 모두 먹을 수 있습니다!
readline() 메서드를 사용하여 파일 읽기
때로는 파일을 줄마다 읽고 싶어요, 마치 맛있는 음식을 입에 달 때마다 즐기는 것처럼. 이때 readline()
이 유용합니다:
file = open("hello.txt", "r")
line = file.readline()
while line:
print(line, end='')
line = file.readline()
file.close()
이 코드는 파일의 각 줄을 읽고 인쇄합니다. print()
함수의 end=''
은 readline()
이 줄바꿈 문자를 유지하므로 추가 줄바꿈을 방지합니다.
readlines() 메서드를 사용하여 파일 읽기
파일의 모든 줄을 리스트로 원한다면 어떻게 해야 하나요? readlines()
를 사용하세요:
file = open("hello.txt", "r")
lines = file.readlines()
for line in lines:
print(line, end='')
file.close()
이 메서드는 파일의 각 줄을 요소로 가진 리스트를 반환합니다. 마치 각 줄이 텍스트로 구성된 초콜릿을 담은 상자 같아요!
with 문 사용
이제 파이썬이 제공하는 깔끔한 트릭에 대해 이야기해 볼까요 – with
문입니다. 이는 문을 (파일) 닫는 것을 잊지 않는 책임 있는 친구를 가지는 것과 같아요:
with open("hello.txt", "r") as file:
content = file.read()
print(content)
with
문은 우리가 끝날 때 자동으로 파일을 닫아줍니다. 더 이상 close()
를 호출할 필요가 없습니다!
바이너리 모드로 파일 읽기
때로는 텍스트 파일 이상의 파일을 읽어야 합니다, 예를 들어 이미지나 실행 파일. 이러한 파일들은 바이너리 모드로 읽습니다:
with open("image.jpg", "rb") as file:
binary_data = file.read()
print(len(binary_data), "bytes read")
"rb"
모드는 파일을 바이너리 읽기 모드로 엽니다. 마치 ones와 zeros를 볼 수 있는 특별한 안경을 쓰는 것과 같아요!
파일에서 정수 데이터 읽기
숫자가 한 줄에 하나씩 들어 있는 파일이 있다고 가정해 봅시다. 이렇게 하면 정수로 사용할 수 있습니다:
with open("numbers.txt", "r") as file:
numbers = [int(line.strip()) for line in file]
print("Sum of numbers:", sum(numbers))
이 코드는 각 줄을 읽고, 정수로 변환한 후, 리스트에 추가합니다. 그런 다음 우리는 숫자로 수식을 계산할 수 있습니다!
파일에서 부동 소수점 데이터 읽기
정수와 마찬가지로 부동 소수점 숫자를 읽을 수 있습니다:
with open("measurements.txt", "r") as file:
measurements = [float(line.strip()) for line in file]
print("Average measurement:", sum(measurements) / len(measurements))
이번에는 float()
를 사용하여 문자열을 실수로 변환합니다.
"r+" 모드를 사용하여 파일에 읽고 쓰기
때로는 같은 파일에 읽고 쓰고 싶어요. "r+"
모드는 정확히 이러한 작업을 수행할 수 있게 해줍니다:
with open("journal.txt", "r+") as file:
content = file.read()
file.write("\nNew entry: Today I learned about file handling in Python!")
file.seek(0)
updated_content = file.read()
print(updated_content)
이 코드는 파일을 읽고, 새 줄을 추가한 후, 변경 사항을 보기 위해 다시 읽습니다.
파이썬에서 파일에 동시에 읽고 쓰기
이런 트릭도 있어요: 두 파일 객체를 사용하여 동시에 읽고 쓸 수 있습니다:
with open("original.txt", "r") as read_file, open("copy.txt", "w") as write_file:
for line in read_file:
write_file.write(line.upper())
이 코드는 하나의 파일에서 읽고, 대문자로 변환된 버전을 다른 파일에 씁니다. 마치 소리를 질러서 복사하는 복사기처럼!
특정 오프셋에서 파일 읽기
때로는 파일의 특정 위치에서 읽기 시작하고 싶어요. seek()
메서드를 사용하면 됩니다:
with open("long_text.txt", "r") as file:
file.seek(50) # 50바이트 지점으로 이동
partial_content = file.read(100) # 그 지점에서 100바이트 읽기
print(partial_content)
이는 책에 도서갈편을 꽂고 그 지점에서 읽기 시작하는 것과 같아요.
이제, 배운 모든 메서드를 손쉽게 정리한 표를 살펴보겠습니다:
메서드 | 설명 |
---|---|
open() |
파일을 엽니다 |
read() |
파일의 모든 내용을 읽습니다 |
readline() |
단일 줄을 읽습니다 |
readlines() |
모든 줄을 리스트로 읽습니다 |
with 문 |
파일을 자동으로 닫습니다 |
"rb" 모드 |
파일을 바이너리 읽기 모드로 엽니다 |
int() / float()
|
문자열을 숫자로 변환합니다 |
"r+" 모드 |
파일을 읽고 쓰기 위해 엽니다 |
seek() |
파일의 특정 위치로 이동합니다 |
그리고 이렇게 끝났습니다, 여러분! 파이썬에서 파일 읽기의 기본을 배웠습니다. 연습이 실력을 만든다는 말을 기억하고, 여러분의 파일에도 이러한 방법을 시도해 보세요.谁知道, 여러분이 다음 파이썬 파일 처리 마법사가 될 수도 있습니다! 코딩을 즐겁게! ?✨
Credits: Image by storyset