[코딩도장] day19. 파일 사용하기(1/2) - open(), write(), close(), read(), readline(), readlines()
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ 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 기억하자!