-
[코딩도장] day19. 파일 사용하기(1/2) - open(), write(), close(), read(), readline(), readlines()IT/파이썬 2020. 9. 10. 01:15
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ Unit27. 파일 사용하기
- 27.1 파일에 문자열 쓰기, 읽기
- 27.2 문자열 여러 줄을 파일에 쓰기, 읽기
- 27.3 파이썬 객체를 파일에 저장하기, 가져오기
>> 27.1 파일에 문자열 쓰기, 읽기 <<
1. 파일에 문자열 쓰기
- open() 함수로 파일을 열어 파일 객체(file object)를 얻은 뒤, write() 메서드 사용 (파일모드 : 쓰기)
- 사용법
파일객체 = open(파일이름, 파일모드) # '파일이름' 파일을 파일모드로 열기. 파일객체 반환
파일객체.write('문자열')
파일객체.close()
└ 파일모드 : 쓰기(w), 읽기(r)
└ 파일 열기(open) > 파일 쓰기(write) > 파일 닫기(close)
소스 (file_write_string.py) 결과 file = open('hello.txt', 'w') # hello.txt 파일을 쓰기모드(w)로 열기
file.write('Hello, world!') # 파일에 문자열 저장
file.close() # 파일 객체 닫기hello.txt 파일에 'Hello, world!' 문자열이 저장되어 생성 2. 파일에서 문자열 읽기
- open() 함수로 파일을 열어 파일 객체(file object)를 얻은 뒤, read() 메서드 사용 (파일모드 : 읽기)
- 사용법
파일객체 = open(파일이름, 파일모드) # '파일이름' 파일을 파일모드로 열기. 파일객체 반환
변수 = 파일객체.read()
파일객체.close()
소스 (file_read_string.py) 결과 file = open('hello.txt', 'r') # hello.txt 파일을 읽기모드(r)로 열기
s = file.read() # 파일에서 문자열 읽기. read의 반환값을 변수에 저장
print(s) # Hello, World!
file.close() # 파일 객체 닫기Hello, world! 3. 자동으로 파일 객체 닫기
- 파일을 사용한 뒤, close()를 사용하지 않고 자동으로 파일 객체를 닫는 방법
- 사용법
with open(파일이름, 파일모드) as 파일객체 :
코드
- 마치 SQL의 with 구문과 동일 (참고 : 여기)
소스 (file_with_as_read_string.py) 결과 with open('hello.txt', 'r') as file : # hello.txt 파일을 읽기모드(r)로 열기
s = file.read() # 파일에서 문자열 읽기
print(s) # 출력Hello, world! >> 27.2 문자열 여러 줄을 파일에 쓰기, 읽기 <<
1. 반복문으로 문자열 여러 줄을 파일에 쓰기
소스 (file_for_write_string.py) 결과 (hello.txt) with open('hello.txt', 'w') as file :
for i in range(3) :
file.write('Hello, world! {0}\n'.format(i))Hello, world! 0
Hello, world! 1
Hello, world! 2└ 앗. 그런데 {0} 와 format(i) 가 의미하는게 뭐였지?? T-T
└ \n : 줄바꿈
└ 문자열 - format메서드 (확인하기 : 여기)
- 문자열 안에 {}(중괄호) 를 넣고, 그 안에 포맷팅을 지정하고 format 메서드로 값을 지정
- 사용법 : '{인덱스}'.format(값)
2. 리스트에 들어있는 문자열을 파일에 쓰기
- 사용법
파일객체.writelines(문자열리스트)
- writelines 는 리스트에 들어있는 문자열을 파일에 씀
- 반드시 리스트의 각 문자열 끝에 개행 문자 \n 을 붙혀야 함!
소스 (file_writelines.py) 결과 (hello.txt) lines = ['안녕하세요.\n', '파이썬\n', '코딩 도장입니다.\n']
with open('hello.txt', 'w') as file :
file.wirtelines(lines)안녕하세요.
파이썬
코딩 도장입니다.3. 파일의 내용을 한 줄씩 리스트로 가져오기
- 사용법
변수 = 파일객체.readlines()
- readlines는 파일의 내용을 한 줄씩 "리스트" 형태로 가져옴
소스 (file_readlines.py) 결과 with open('hello.txt', 'r') as file :
lines = file.readlines()
print(lines)['안녕하세요.\n', '파이썬\n', '코딩 도장입니다.\n'] 4. 파일의 내용을 한 줄씩 읽기
- 사용법
변수 = 파일객체.readline()
- readline으로 파일 읽을 때는 while 반복문을 활용해야 함! (파일 내에 문자열이 몇 줄이나 있는지 모르기 때문)
- readline은 더 이상 읽을 줄이 없을 때는 빈 문자열을 반환하며, while에서 이런 특성을 이용해서 조건식을 사용 (ex. line != '')
소스 (file_readlines_while.py) 결과 with open('hello.txt', 'r') as file :
line = None # 반드시 None으로 초기화!
while line != ''
line = file.readline()
print(line.strip('\n')) # 파일에서 읽어온 문자열에서 \n 삭제하여 출력안녕하세요.
파이썬
코딩 도장입니다.└ strip 메서드는 지정한 문자를 삭제하며, 여기서는 개행문자 \n을 삭제함
5. for 반복문으로 파일의 내용을 줄 단위로 읽기
소스 (file_for.py) 결과 with open('hello.txt', 'r') as file :
for line in file : # for에 파일객체 지정 시, 파일의 내용을 한 줄씩 읽어 변수에 저장함
print(line.strip('\n'))안녕하세요.
파이썬
코딩 도장입니다.● 요약 ●
1. 파일을 다룰 땐, open > write/read > close 기억하자!
'IT > 파이썬' 카테고리의 다른 글
[코딩도장] day20. 27.5 연습문제 (0) 2020.09.11 [코딩도장] day20. 파일 사용하기(2/2) - pickle, unpickle (0) 2020.09.11 [코딩도장] day18. 세트 사용하기(2/2) - add(), remove(), discard(), pop(), clear(), copy() (0) 2020.09.06 [코딩도장] day17. 세트 사용하기(1/2) - set(), issubset(), issuperset(), isdisjoint() (0) 2020.09.01 [코딩도장] day16. 딕셔너리 응용하기(2/2) - items(), keys(), values() (0) 2020.09.01