IT/파이썬

[코딩도장] day19. 파일 사용하기(1/2) - open(), write(), close(), read(), readline(), readlines()

_하늘여우_ 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 기억하자!