개발 블로그

[Python] 파일입출력 본문

Programming Language/Python

[Python] 파일입출력

draidev 2022. 3. 22. 02:51

Python의 파일입출력에 대해 알아보기 전에 utf-8에 대해 알아보고 싶다면 이 페이지를 참고하세요!!

 

Python 파일입출력은 기본적으로 open(), write(), close() 함수들로 이루어집니다.

그리고 with문을 통해서 close()함수를 생략할 수도 있습니다.

이제 하나하나 알아보겠습니다!

목차>

더보기

목차

     

    01  파일 생성하기

    파일을 생성하기 open()함수를 사용합니다. open 함수는 다음과 같이 "파일 이름"과 "파일 열기 모드"를 입력값으로 받고 결괏값으로 파일 객체를 돌려줍니다. (encoding='utf-8'은 생략 가능합니다.)

    파일 객체  = open(파일 이름, 파일 열기 모드)

    (C언어를 배우면서 파일입출력을 처음 만났을때 파일이름 뒤에 확장자 .txt를 안적어줘서 헤맸던 기억이 나네요ㅎㅎ)

    file = open('cage.txt', encoding='utf-8', mode='w')
    file.close()

    < 파일 열기 모드 >

    r 읽기모드 - 파일을 읽기만 할 때 사용
    w 쓰기모드 - 파일에 내용을 쓸 때 사용
    a 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용

    파일 객체를 다 사용하고 난 뒤에는 반드시 close()함수를 사용하여 닫아줘야 합니다.

    그렇지 않으면 파일객체가 계속 열려있는 상태를 유지하며 다음과 같은 에러가 발생합니다.

    ValueError: I/O operation on closed file.

    02 파일에 출력값 입력하기 

    쓰기모드(w)로 파일객체를 생성한 후에 write()함수를 사용하면 파일에 원하는 내용을 출력 할 수 있습니다.

    직접 문자열을 전달해도 되지만 다음과 같이 리스트의 내용을 for문을 사용하여 하나씩 출력 할 수도 있습니다.

    cage = ['Cat', 'Dog', 'Tiger']
    
    file = open('cage.txt', encoding='utf-8', mode='w')
    
    for animal in cage:
        file.write(animal + '\n')

    03 with문을 사용하여 파일 생성하기

    with문을 사용하면 close()함수를 사용하지 않아도 with블록을 벗어나는 순간 파일 객체가 자동으로 close됩니다.

    with open('cage_3.txt', encoding='utf-8', mode='w') as f : # as == alias == 별명
        for animal in cage:
            f.write(animal + '\n')

    04 파일 읽기

    open()함수를 사용하여 읽기모드 'r'로 파일 객체를 생성한 후 다음과 같은 함수를 사용하여 파일의 내용을 읽습니다.

    • readline() : 파일의 한 줄을 읽어 반환한다.
    • readlines() : 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트를 반환한다.

    이때 readlines()함수는 개행문자(\n)를 포함하므로 만약 개행문자를 제거한 상태로 읽고 싶다면 strip()함수를 사용하면 됩니다.

    file = open('cage.txt', 'r', encoding='utf-8')  # 읽기 모드
    cage = file.readlines()  #  여러줄 한번에 읽어서 리스트에 담기
    for c in cage:
    	print(c.strip())  # 개행문자 제거
    
    file.close()

     

    Comments