조금씩 꾸준히 완성을 향해

[python] 파일 처리 / 파일 읽고 쓰기 본문

Python/문법

[python] 파일 처리 / 파일 읽고 쓰기

all_sound 2022. 9. 4. 13:24

파이썬에서 다른 파일의 데이터를 읽고 처리하는 방법을 알아보자.

 

파일을 다루기 위해서는 먼저 open 함수의 사용법을 알아야 한다.

 

▶ open 함수 사용법

   객체 = open(파일명, 모드[, encoding= 'utf8']) 

   객체.close()

 

처리할 파일명과 처리할 모드를 open 함수에 넣어 파일 객체를 만든다. 

 ※ 주의! 파일을 열면 반드시 닫는 close() 함수도 함께 써줘야 한다. 

 

파일 열기 모드 설명
r 읽기 모드로 연다.
Dafault
w 쓰기 모드로 연다. 기존내용 삭제
a 쓰기 모드로 연다. 기존내용 보존
b 이전 모드로 연다
t 텍스트 모드로 연다
Default

 

파일에서 어떤 작업을 수행할 것인지에 따라 모드를 선택해 주면 된다.

모드를 생략할 경우 기본적으로 텍스트, 읽기 모드로 파일을 열게 된다. 

 

 

 

▶ 쓰기모드

 

f = open('sample2.txt', 'w')
f.write('-'*7 + '\n')
for i in range(1, 4):
    sent = f'{i}번 항목 \n'
    f.write(sent)
f.write('-'*7 + '\n')
f.close()

sample2 파일을 쓰기모드로 생성해 글을 작성한 예이다.

외부 파일에 글을 쓸 때는 write() 함수를 사용한다. 

 

※ 주의! print() 함수에는 기본값으로 end ='\n' 가 생략되어 있어 줄바꿈이 되지만,  write()에서는 아니기 때문에 

줄을 바꾸기 위해서는 '\n'를 꼭 붙여 주어야 한다. 

 

 

파일을 열어보면 이렇게 글이 잘 작성된 걸 볼 수 있다. 

 

scores = ['김소영 82 80 93 97 93 88',
          '정예린 86 100 93 86 90 77',
          '이세영 91 88 99 79 92 68',
          '정수정 86 100 93 89 92 93',
          '박지수 80 100 95 89 90 84']
f=open('scores.txt', 'w')
for i in scores:
    f.write(i+'\n')
f.close()

 

이렇게 현재 파일에 있는 데이터들을 활용해서 새로운 파일에 글을 작성할 수도 있다. 

 

 

리스트의 값들이 잘 옮겨진 것을 볼 수 있다. 

 

 

 

▶ 읽기모드

 

읽기 모드에서는 3가지의 읽기 방법이 있다.

 

1. readline : 파일을 한줄씩 string 형태로 가져온다. 

 

위에서 작성했던 sample2 파일을 readline()으로 읽으면, 실행될 때마다 한 줄씩 순서대로 파일이 출력되는 것을 볼 수 있다. 

 

 

readline()으로 전체 파일 내용을 읽기 위해서는 위와 같이 while문을 활용하면 된다. 

줄이 존재하는 한 그 줄을 차례대로 출력하고, 줄이 존재하지 않으면 while문을 멈추는 코드이다.

 

 

2. readlines : 파일의 모든 줄을 list 형태로 가져온다. 

 

readlines()를 실행하면 줄의 내용들이 list의 item 값들로 들어온다. 

따라서 한 줄씩 보이게 출력을 하려면 for 문을 돌려 item 하나하나를 따로 출력하는 방식을 사용할 수 있다. 

 

 

3. read() : 파일의 전체 내용을 string 형태로 가져올 때 사용한다.

 

한번에 모든 내용이 출력이 되며, readlines() 와는 달리 문자열의 형태인 것을 확인할 수 있다. 

 

 

 

▶ a 모드

 

a모드란 append 모드의 줄임말로, 기존 파일에 있는 내용 끝에 새로운 내용을 추가할 때 사용된다.

f = open('sample2.txt', 'a')
for i in range(4, 7):
    f.write(f'\n{i}번 항목')
f.close()

작업했던 sample2 파일에 4번부터 6번까지의 항목을 추가해 보았다. 

 

 

이렇게 끝에 추가가 될 것을 볼 수 있다.

 

 ※주의! 추가할 횟수만큼만 해당 코드를 실행해야 한다.  

 

 

같은 코드를 두 번 실행해 버리면 이렇게 항목이 더 붙게 되니 항상 신중해야 한다. 

 

 

 

▷ with open 방식

 

oepn() 함수로 객체를 만드는 것 보다 조금 더 간단하게 사용할 수 있는 방식이다.

 

 with open(파일명, 모드) as 변수:

     실행문

 

위와 같은 방식으로 사용한다.

 

 ※참고!  with 블록을 벗어나면 자동으로 파일이 닫히기 때문에 마지막에 close()를 안 적어도 된다. 

 

f = open('write1.txt', 'w')
f.write('Welcome to Python')
f.close()

 

with open('write2.txt', 'w') as f:
    f.write('Welcome to Python')

 

객체 = open 방식을 with open 방식으로 바꿔 보았다.

코드가 더 간결해 지며, close()를 일일히 써주지 않아도 되기 때문에 편리하다. 

 

 

결과는 보는 것과 같이 동일하게 나온다.