일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시각화
- 최종 프로젝트
- 서브쿼리
- Python
- pandas
- 기초통계
- 크롤링
- 프로젝트
- Chat GPT
- 프롬프트 엔지니어링
- jd
- streamlit
- 팀프로젝트
- 태블로
- 데이터분석
- SQL
- GA4
- lambda
- 히트맵
- 기초프로젝트
- 클러스터링
- 전처리
- SQLD
- 머신러닝
- 데이터 분석
- cross join
- If
- 군집화
- data analyst
- da
- Today
- Total
세조목
PYTHON 정리(점프투파이썬 - 함수: 파일 읽고 쓰기)(24.01.07) 본문
- 본 내용들은 PYTHON을 공부하면서 차후 제가 복습하기위해 정리해놓은 것으로 제가 새롭게 알게된 내용들만을 정리하였습니다. 또한 배움이 부족하여 미처 다 파악하지 못한 부분들도 많으니 혹시나 이 포스팅을 보시는 분들께서는 다른 포스팅, 도서, 강의도 함께 참고하시기 바라겠습니다.
1. 파일 생성 및 쓰기 모드로 열어 내용 쓰기
이전까지는 print문을 사용해서 값을 출력했었다.
print문 말고도 값을 출력하는 방법이 또 있는데 직접 파일을 생성하는 것이다.
f = open("C:/저장경로 입력/새파일.txt", 'w')
for i in range(1, 5):
data = "%d번째 손님입니다.\n" % i
f.write(data)
f.close()
f = open("C:/저장경로 입력/새파일.txt", 'w')
라는 코드를 작성하면 내가 지정한 저장경로에 '새파일'이라는 이름의 txt파일이 생성된다.
※ '저장경로 입력'에는 저장하고자하는 위치를 입력하면 된다.
그런 다음 입력하고자 하는 값을 다음 절에 적어주고(반복되는 값일 경우 예시에서처럼 for문 활용),
f.close()로 파일을 닫아주면된다.
사실 f.close()로 파일을 닫아주지 않아도 파이썬 프로그램이 자동으로 닫아주긴하지만
f.close()를 입력하지 않을 경우 파일을 다시 사용할 때 오류가 발생한다.
파일 열기 모드에는 아래 세 가지 종류가 있다.
파일 열기 모드 | 설명 |
r | 읽기 모드: 파일을 읽기만 할 때 사용 |
w | 쓰기 모드: 파일에 내용을 쓸 때 사용 |
a | 추가 모드: 파일의 마지막에 새로운 내용을 추가할 때 사용 |
2. 파일을 읽는 여러 가지 방법
- readline 함수 사용
- readlines 함수 사용
- read 함수 사용
- 파일 객체를 for문과 함께 사용
● Readline 함수 사용
readline 함수를 이용해서 파일을 읽을 수 있다.
f = open("C:/저장경로 입력/새파일.txt", 'r')
line = f.readline()
print(line)
f.close()
이렇게 입력하면 저장경로에 저장된 '새파일' txt파일이 읽기 모드로 열리고,
첫번재 줄의 문자열이 출력된다.
만약 전체 문자열을 출력하고싶다면
f = open("C:/저장경로 입력/새파일.txt", 'r')
while True:
line = f.readline()
if not line: break
print(line)
f.close()
위와 같이 코드를 입력하면 된다.
while 반복문의 무한 루프를 이용하는 것인데
값이 없지 않는 이상 계속해서 출력하는 것이다.
만약 더 이상 값이 없다면 break가 걸리게 된다.
그렇게 했을때의 결과값은 아래와 같다.
print 매개변수의 초깃값이 절 나누기(\n)로 되어있기때문에 위와같이 출력되는건데
print(line, end='')를 입력해주면 문자열과 문자열 사이의 공백이 사라지게된다.
● Readlines 함수 사용
readlines 함수는 파일의 모든 문자열을 읽어서 각각의 줄을 요소로 가지는 리스트를 반환한다.
f = open("C:/저장경로 입력/새파일.txt", 'r')
data = f.readlines
print(data)
readline함수에서는 while 반복문을 사용해야 파일 內 모든 문자열을 읽을 수 있었지만
readlines 함수에서는 for 반복문을 사용해서 파일 內 모든 문자열을 읽는다.
f = open("C:/저장경로 입력/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
print(line)
f.close()
문자열과 문자열 사이의 공백없이 출력하고싶다면 두 가지 방법이 있는데
첫 번째는 readline함수에서 살펴본 것처럼 print문 매개변수에 end = ''을 입력하는 것이고
두 번째는 for문 안에 line = line.strip()을 입력하는 것이다.
※ strip 메소드는 모든 공백을 제거해주는 메소드다.
# 방법1
f = open("C:/저장경로 입력/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
print(line, end = '')
f.close()
# 방법2
f = open("C:/저장경로 입력/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
line = line.strip()
print(line)
f.close()
● read함수 사용
read 함수는 파일에 저장된 내용 전체를 문자열로 리턴하며 코드는 아래와 같이 작성하면된다.
f = open("C:/저장경로 입력/새파일.txt", 'r')
data = f.read()
print(data)
f.close()
● 파일 객체를 for 문과 함께 사용
f = open("C:/저장경로 입력/새파일.txt", 'r')
for line in f:
print(line)
f.close()
앞서 설명했던 readlines 함수를 사용할 때 for문을 활용하므로써
파일 內 모든 문자열을 불러왔던것처럼
위 코드에서 적힌것처럼도 for문을 활용한 파일 불러오기가 가능하다.
# readline 사용
f = open("C:/저장경로 입력/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
print(line)
# readline 사용 x
for line in f:
print(line)
차이점이라고한다면
readlines를 사용했을때
lines라는 변수가 f.readlines()를 가리키도록해서
for문으로 lines에 있는 문자열을 하나씩 불러왔다면
두번째의 경우
open("C:/저장경로 입력/새파일.txt", 'r') 를 가리키고있는 변수 f에 있는 문자열을 하나씩 불러왔다는 점이다.
즉 별도의 변수 지정을 하지 않은 것이다.
이 방법을 사용해서 파일을 불러올 경우 역시도 절과 절 사이에 공백이 있는데
이를 없애기 위해서는 마찬가지로 print문 매개변수에 end=''를 입력하면 된다.
3. 파일에 새로운 내용 추가하기
파일 열기 모드를 'w'로 불러오면 기존에 존재하는 내용들이 모두 사라진다.
기존의 내용을 모두 유지한채로 불러오려면 파일 열기 모드를 'a'로 지정해줘야한다.
f = open("C:/저장경로 입력/새파일.txt",'a')
for i in range(11, 20):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
위 코드는
파일 열기 모드를 a(추가 모드)로 불러와서
'11번째 줄입니다'부터 '20번째 줄입니다'를 추가한다는 내용이다.
파일을 a(추가 모드)로 불러올 때는 f = open("C:/저장경로 입력/새파일.txt",'a')
어떤 값을 입력할 지는 for문
결괏값을 기존 파일에 추가할 때는 f.write(data)를 적으면 된다.
그런데 저렇게만 입력하면 아래와 같이 문자열이 추가된다.
다음 절에 새로운 문자열을 추가하고싶다면 아래와같이 \n을 추가해주면 된다.
f = open("C:/저장경로 입력/새파일.txt", 'a')
for i in range(11, 21):
data = f'\n{i}번재 줄입니다.'
f.write(data)
f.close()
만약 \n을 {i}앞이 아닌 가장 마지막 '~~줄입니다.' 뒤에 넣으면 어떻게 될까?
위와같이 새로 추가되는 문자열 중 가장 첫번째 문자열은 기존 문자열 바로 옆에 추가되고
그 이후 문자열부터 한 절씩 입력된다.
4. with문과 함께 사용
f = open("second.txt", 'w')
f.write("second example")
f.close()
일반적으로는 파일을 만들때 위와 같이 코드를 입력한다.
앞에서 언급했지만 f.close()를 넣지 않더라도 프로그램이 알아서 파일을 닫지만
넣지 않을 경우 파일을 불러올 때 오류가 발생하기때문에 f.close()를 입력해주어야한다.
만들어야하는 파일이 많다면 생각보다 번거로운 작업이 될 수 있는데
이 때 with문을 활용해서 자동으로 파일을 여닫을 수 있게 할 수 있다.
with open("second.txt", "w") as f:
f.write("second example")
간단하지 않은가?
이렇게 코드를 작성하면 with문을 벗어나는 순간 열린 파일 객체 f는 자동으로 닫히게 된다.
'데이터 분석 공부 > Python' 카테고리의 다른 글
PYTHON 정리(개인과제 오답 풀이)(24.01.10) (1) | 2024.01.10 |
---|---|
PYTHON 정리(알고리즘, 큐 예제)(24.01.08) (0) | 2024.01.08 |
PYTHON 정리(점프투파이썬 - 함수: 사용자 입출력)(24.01.07) (1) | 2024.01.07 |
PYTHON 정리(CLASS)(24.01.06) (1) | 2024.01.06 |
PYTHON 정리(IDE, print&return, 메소드, break, pass, continue)(24.01.05) (1) | 2024.01.05 |