[Python] 파일 읽고 쓰기

haeun·2023년 11월 23일
0

Python

목록 보기
5/5
post-thumbnail

파일 열기

파일을 다루기 위해서는 먼저 파일을 오픈해야한다. 이때 open() 함수를 이용한다.

with open과 open의 차이

with open()close()를 자동으로 해주기 때문에 비교적 코드가 간결하다.

open()으로 작성하면 별칭이 아닌 변수로 바인딩하여 사용하고 명시적으로 close()해준다.

# with open()
with open("매수종목1.txt", "w", encoding="utf8") as file:
    file.write("005930\n005380\n035420")
    
# open()
file = open("매수종목1.txt", "w", encoding="utf8"):
    file.write("005930\n005380\n035420")    



mode

open 함수의 두번째 arg인 mode는 파일을 어떤 용도로 사용할지를 결정하는 역할을 한다.

  • 'w' : 쓰기 모드. 파일을 변경하거나 추가한다. 기존 파일이 없으면 새로 생성되고 기존 파일이 있는 경우에는 삭제하고 새로 생성한다. file pointer는 시작 부분에 위치

  • 'r' : 읽기 모드. 파일의 정보를 읽기만 한다. file pointer는 시작 부분에 위치

  • 'r+' : 읽기/쓰기 모드. 파일을 변경하고 읽을 때 사용한다. file pointer는 시작 부분에 위치

  • 'a+': 추가와 읽기 모드. 파일을 열어 읽을 수 있고 파일 끝에 데이터를 추가할 수 있다. file pointer는 끝 부분에 위치

  • 생략: 읽기 모드



파일 쓰기

csv 파일 만들기

import csv

with open("매수종목3.csv", mode="w", encoding="utf8", newline='') as file:
    writer = csv.writer(file)
    writer.writerow(["종목명", "종목코드", "PER"])
    writer.writerow(["삼성전자", "005930", 15.59])
    writer.writerow(["NAVER", "035420", 55.82])
    
with open("매수종목3.csv", mode="a+", encoding="utf8", newline="") as file:
    writer = csv.writer(file)
    writer.writerows([["종목명", "종목코드", "PER"],\
                      ["삼성전자", "005930", 15.59],\
                        ["NAVER", "035420", 55.82]])

코드를 먼저 살펴보면 현재 경로에 매수종목3.csv 파일을 w 모드로 생성하고 두번째 코드에서 mode='a+'에 따라 정보를 추가한다.

writerow()는 행 데이터를 추가하는데 매개변수는 iterable한 객체여야 한다. writerows()은 동시에 여러 헹 데이터를 추가하고자 할 때 사용되며 2차원 배열처럼 다중 배열을 이용해 작성할 수 있다.

매수종목3.csv 결과

파일 읽기

파일을 읽기위해 모드를 설정해주고 파일 객체를 메소드를 통해 받아온다.

파일 데이터를 읽어오는 여러 메소드를 결과를 보면서 비교해보자

read()size를 입력하지 않으면 파일의 전체 데이터를 읽어온다. 지정하면 원하는 바이트만큼 받아올 수 있다. 예시에서는size를 3으로 지정해서 3 바이트를 받아왔다. 한글은 1글자 당 1로 인식한다.

readline()은 한 줄씩 읽어온다. 그리고, 반환값을 출력했을때 마지막에 한 줄이 띄어져있음을 확인할 수 있다. 텍스트 파일은 라인별로 구성되어있는데 각 라인의 끝에는 보이지 않는 new line이 존재하기 때문이다. 파이썬에서는 이것을 /n으로 표기한다.

readline()은 한 줄씩 list 타입으로 모두 받아온다. 역시 마찬가지로 new line이 입력되어있는 것을 볼 수 있다.

예시의 결과처럼 일부 데이터만 읽은 경우, 닫히지 않은 파일에서는 file pointer가 예상하는 위치가 아닐 수 있음을 유의해야 한다.




참고

파이썬 도큐먼트

파이썬 파일다루기

profile
환영합니다 :) 이 곳은 개인 공부를 정리하고 창의적으로 활용하기 위한 제 2의 전두엽으로 활용되고 있으며, 오류에 대한 피드백은 댓글로 남겨주시면 감사하겠습니다.

0개의 댓글