ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코딩도장] 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 기억하자!

     

    댓글

Designed by Tistory.