Skip to content

2.07. 내용정리: 7일차

흔한 찐따 edited this page Mar 15, 2022 · 2 revisions

파일 입출력

오늘은 파이썬에서 새로운 파일을 생성하거나 읽거나 쓰는 방법에 대해서 공부하였다.

open 함수

  • open 함수는 파이썬에서 파일 입출력을 위한 함수이다.
  • 매개변수로 파일명파일 열기 모드를 받고 결과값으로 파일 데이터를 돌려준다.

예제

아래는 open 함수를 사용해서 test.txt 라는 텍스트 파일을 생성하는 예시이다.

# 파일명과 열기 모드를 인자값으로 넣어준다.
f = open('test.txt', 'w')
# 파일 입출력을 끝냈다면 반드시 'close' 함수를 사용해서 파일을 닫아준다.
f.close()

f.close() 함수

  • 위 예제에서 f.close() 는 열려 있는 파일 데이터를 닫아 주는 역할을 한다.
  • 이 문장은 생략해도 된다.
  • 생략이 가능한 이유는 프로그램을 종료할 때 파이썬 프로그램이 열려 있는 파일을 자동으로 닫아주기 때문이다.
  • 하지만 close() 를 사용해서 열려 있는 파일을 직접 닫아 주는 것이 좋다.
  • 왜냐하면 쓰기모드 w 로 열었던 파일을 닫지 않고 다시 사용하려고 하면 오류가 발생하기 때문이다.

공부하면서 곰곰히 생각해본 결과, 메모장이나 ppt 파일을 열어서 수정한 다음에 저장하려고 하면 '프로세스가 이미 실행중입니다.' 라는 메시지가 뜨면서 저장이 안 되는 경우를 말하는 것 같다.

파일 열기 모드에는 다음과 같은 것이 있다.

파일 열기 모드

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

파일을 쓰기 모드 w 로 열면 해당 파일이 이미 존재할 경우 원래 있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성된다. 위 예제에서는 디렉터리에 파일이 없는 상태에서 test.txt 를 쓰기 모드인 w 로 열었기 때문에 test.txt 라는 이름의 새로운 파일이 현재 디렉터리에 생성되는 것이다.

open 함수의 파일 열기 기본 모드는 읽기 모드( r )이다.

파일 경로와 슬래시( / )

  • 파이썬 코드에서 파일 경로를 표시할 때 C:/경로/test.txt 처럼 슬래시( / )를 사용할 수 있다.
  • 만약 역슬래시( \ )를 사용한다면 C:\\경로\\test.txt 처럼 역슬래시를 2개 사용하거나 r"C:\경로\test.txt" 와 같이 문자열 앞에 r 문자(Raw String)를 덧붙여 사용해야 한다.
  • 왜냐하면 "C:\경로\note\test.txt" 처럼 파일 경로에 \n 과 같은 이스케이프 문자가 포함되어 있을 경우, 줄바꿈 문자로 해석되어 의도했던 파일 경로와 달라지기 때문이다.

with

  • 파이썬의 모든 타입은 객체(object) 이며, 이 객체를 정의한 것을 클래스(class) 라고 한다.
  • 클래스에는 데이터와 함수를 정의할 수 있다.
  • 클래스에 __enter__ 함수와 __close__ 함수가 정의되어 있는 경우, 이를 자동으로 호출해주는 키워드가 바로 with 키워드이다.

객체랑 클래스가 무엇인지는 다음 챕터에 나와있는 것 같아서 '아, with 키워드는 자동으로 close 함수를 호출하는구나.'라고 이해했다.

as

  • as 키워드는 키워드의 뜻에서 유추할 수 있는 것처럼 ~로써 라는 의미를 가지고 있다.
  • 객체를 다른 이름으로 정의할 수 있다. (즉, 별명을 붙여주는 것과 똑같다.)

open 함수와 with 키워드 함께 사용하기

with 객체 as 변수명: 이런 식으로 사용하면 된다.

예시

with open('test.txt') as file:
    print(file)

파일 쓰기

  • 파일에 데이터를 쓰기 위해서는 open 함수에 파일 쓰기 모드인 w를 인자값으로 넣어준다.
  • 그 다음 write 함수를 통해 파일에 데이터를 쓰면 된다.

예시

data = 'Hello, Python!'

file = open('test.txt', 'w')
file.write(data)

file.close()

withas 키워드로 사용하기

data = 'Hello, Python!'

with open('test.txt', 'w') as file:
    file.write(data)

여러 데이터를 한번에 쓰기

datalist = ['안녕하세요.', '반갑습니다.', '저는 흔한 찐따입니다.', '저는 파이썬을 독학하는 중입니다.']

with open('test.txt', 'w') as file:
    for data in datalist:
        file.write(data)

파일 읽기

파이썬에는 외부 파일을 읽어 들여 프로그램에서 사용할 수 있는 여러 가지 방법이 있다.

1. readline 함수

readline 함수는 파일에서 데이터를 줄 바꿈 문자 \n 를 기준으로 한줄씩 읽어온다.

with open('test.txt') as file:
    while True:
        line = file.readline()
        # 더 이상 불러올 데이터(라인)이 없는 경우, 반복문을 빠져 나온다.
        if line is None:
            break
        print(line)

2. readlines 함수

readlines 함수는 파일에서 데이터를 줄 바꿈 문자 \n 를 기준으로 한줄씩 모든 데이터를 불러온다.

with open('test.txt') as file:
    lines = file.readlines()
    
    for line in lines:
        print(line)
줄 바꿈 문자 \n 제거하기
  • 파일을 읽을 때 줄 끝의 줄 바꿈 문자 \n 를 제거하고 사용해야 할 경우가 많다.
  • 다음처럼 문자열의 strip 함수를 사용하면 줄 바꿈 문자를 제거할 수 있다.
with open('test.txt') as file:
    lines = file.readlines()

    for line in lines:
        # 맨 마지막 줄의 줄 바꿈 문자(\n)를 제거한다.
        line = line.strip()
        print(line)

3. read 함수

  • read 함수는 파일의 내용 전체를 문자열로 돌려준다.
  • 따라서 아래의 예시 중 data 는 파일의 전체 내용이다.
with open('test.txt') as file:
    data = file.read()
    print(data)

흔한 찐따

안녕하세요, 흔한 찐따 입니다.

Clone this wiki locally