-
Notifications
You must be signed in to change notification settings - Fork 1
2.07. 내용정리: 7일차
흔한 찐따 edited this page Mar 15, 2022
·
2 revisions
오늘은 파이썬에서 새로운 파일을 생성하거나 읽거나 쓰는 방법에 대해서 공부하였다.
-
open함수는 파이썬에서 파일 입출력을 위한 함수이다. - 매개변수로
파일명과파일 열기 모드를 받고 결과값으로 파일 데이터를 돌려준다.
아래는 open 함수를 사용해서 test.txt 라는 텍스트 파일을 생성하는 예시이다.
# 파일명과 열기 모드를 인자값으로 넣어준다.
f = open('test.txt', 'w')
# 파일 입출력을 끝냈다면 반드시 'close' 함수를 사용해서 파일을 닫아준다.
f.close()- 위 예제에서
f.close()는 열려 있는 파일 데이터를 닫아 주는 역할을 한다. - 이 문장은 생략해도 된다.
- 생략이 가능한 이유는 프로그램을 종료할 때 파이썬 프로그램이 열려 있는 파일을 자동으로 닫아주기 때문이다.
- 하지만
close()를 사용해서 열려 있는 파일을 직접 닫아 주는 것이 좋다. - 왜냐하면 쓰기모드
w로 열었던 파일을 닫지 않고 다시 사용하려고 하면 오류가 발생하기 때문이다.
공부하면서 곰곰히 생각해본 결과, 메모장이나 ppt 파일을 열어서 수정한 다음에 저장하려고 하면 '프로세스가 이미 실행중입니다.' 라는 메시지가 뜨면서 저장이 안 되는 경우를 말하는 것 같다.
파일 열기 모드에는 다음과 같은 것이 있다.
| 모드 | 설명 |
|---|---|
| r | 읽기모드 - 파일을 읽기만 할 때 사용 |
| w | 쓰기모드 - 파일에 내용을 쓸 때 사용 |
| a | 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용 |
파일을 쓰기 모드 w 로 열면 해당 파일이 이미 존재할 경우 원래 있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성된다.
위 예제에서는 디렉터리에 파일이 없는 상태에서 test.txt 를 쓰기 모드인 w 로 열었기 때문에 test.txt 라는 이름의 새로운 파일이 현재 디렉터리에 생성되는 것이다.
open함수의 파일 열기 기본 모드는 읽기 모드(r)이다.
- 파이썬 코드에서 파일 경로를 표시할 때
C:/경로/test.txt처럼 슬래시(/)를 사용할 수 있다. - 만약 역슬래시(
\)를 사용한다면C:\\경로\\test.txt처럼 역슬래시를 2개 사용하거나r"C:\경로\test.txt"와 같이 문자열 앞에r문자(Raw String)를 덧붙여 사용해야 한다. - 왜냐하면
"C:\경로\note\test.txt"처럼 파일 경로에\n과 같은 이스케이프 문자가 포함되어 있을 경우, 줄바꿈 문자로 해석되어 의도했던 파일 경로와 달라지기 때문이다.
- 파이썬의 모든 타입은 객체(object) 이며, 이 객체를 정의한 것을 클래스(class) 라고 한다.
- 클래스에는 데이터와 함수를 정의할 수 있다.
- 클래스에
__enter__함수와__close__함수가 정의되어 있는 경우, 이를 자동으로 호출해주는 키워드가 바로with키워드이다.
객체랑 클래스가 무엇인지는 다음 챕터에 나와있는 것 같아서 '아,
with키워드는 자동으로close함수를 호출하는구나.'라고 이해했다.
-
as키워드는 키워드의 뜻에서 유추할 수 있는 것처럼~로써라는 의미를 가지고 있다. - 객체를 다른 이름으로 정의할 수 있다. (즉, 별명을 붙여주는 것과 똑같다.)
with 객체 as 변수명: 이런 식으로 사용하면 된다.
with open('test.txt') as file:
print(file)- 파일에 데이터를 쓰기 위해서는
open함수에 파일 쓰기 모드인w를 인자값으로 넣어준다. - 그 다음
write함수를 통해 파일에 데이터를 쓰면 된다.
data = 'Hello, Python!'
file = open('test.txt', 'w')
file.write(data)
file.close()data = 'Hello, Python!'
with open('test.txt', 'w') as file:
file.write(data)datalist = ['안녕하세요.', '반갑습니다.', '저는 흔한 찐따입니다.', '저는 파이썬을 독학하는 중입니다.']
with open('test.txt', 'w') as file:
for data in datalist:
file.write(data)파이썬에는 외부 파일을 읽어 들여 프로그램에서 사용할 수 있는 여러 가지 방법이 있다.
readline 함수는 파일에서 데이터를 줄 바꿈 문자 \n 를 기준으로 한줄씩 읽어온다.
with open('test.txt') as file:
while True:
line = file.readline()
# 더 이상 불러올 데이터(라인)이 없는 경우, 반복문을 빠져 나온다.
if line is None:
break
print(line)readlines 함수는 파일에서 데이터를 줄 바꿈 문자 \n 를 기준으로 한줄씩 모든 데이터를 불러온다.
with open('test.txt') as file:
lines = file.readlines()
for line in lines:
print(line)- 파일을 읽을 때 줄 끝의 줄 바꿈 문자
\n를 제거하고 사용해야 할 경우가 많다. - 다음처럼 문자열의
strip함수를 사용하면 줄 바꿈 문자를 제거할 수 있다.
with open('test.txt') as file:
lines = file.readlines()
for line in lines:
# 맨 마지막 줄의 줄 바꿈 문자(\n)를 제거한다.
line = line.strip()
print(line)-
read함수는 파일의 내용 전체를 문자열로 돌려준다. - 따라서 아래의 예시 중
data는 파일의 전체 내용이다.
with open('test.txt') as file:
data = file.read()
print(data)