Python 기초 | 파일 입출력

원준·2023년 5월 23일

파이썬

목록 보기
11/21

파일 입출력

  • 파이썬에서 파일 생성, 수정

1. open()

  • 파이썬 내장 함수
  • 파일을 열고 파일 객체를 리턴한다.
  • 기본 사용 방법
    f = open(경로/파일 이름, 파일 열기 모드) # 해당 파일이 없다면 생성함
    f.close() # 파일을 열면 무조건 닫아야 된다.
  • 파일 열기 모드
모드설명
"r"read, 읽기 모드, 파일을 읽기만 할 때 사용한다.
"w"write, 쓰기 모드, 파일에 내용을 덮어 쓸때 사용한다.
"a"add, 쓰기 추가 모드, 파일의 마지막에 새로운 내용을 추가할 때 사용한다.
  • 인코딩 변환
    • 한글을 사용할려면 "UTF-8"로 인코딩해서 사용해야한다.
    • 기본 사용 방법
      f = open(경로/파일 이름, 파일 열기 모드, encoding="UTF-8")
      f.close()
  • 기본 예시)
    • W 쓰기 모드
      f = open("./file_test/새파일.txt", "w", encoding="UTF-8")
      for i in range(1, 11):
          f.write(str(i) + "번째 줄\n")
      f.close()
    • a 추가 모드
      f = open("./file_test/새파일.txt", 'a', encoding="UTF-8")
      for i in range(11, 21):
          f.write(str(i) + "번째 줄\n") 
      f.close()
    • r 읽기 모드
      • 닫기 전에 해당 파일의 내용을 전부 읽어야 한다. (닫은 후에는 읽기 불가능)
      • 파일 읽기를 완전히 끝났다면 close()로 닫아야 한다.
      • readline()
        • 한줄 읽고 다음 줄 읽을 준비를 한다.
      line = f.readline() #1번째 줄\n
      print(line)
      line = f.readline() #2번째 줄\n
      print(line)
      f.close()
      • radlines()
        • 모든 줄을 읽어서 리스트로 반환한다.
      lines = f.readlines() # list로 반환됨.
      for line in lines:
          print(line, end="")
      f.close()
      • read()
        • 파일 내용 전체를 문자열롤 반환한다.
      data = f.read()
      print(data) # "1번째 줄\n2번째 줄\n ...." 로 출력됨
      f.close()
      • 함수를 사용하지 않고 바로 읽기
        • 파일 객체를 이용해 바로 읽는 방법이다.
      f = open("./file_test/새파일.txt", 'a', encoding="UTF-8")
      for line in f:
          print(line)
      f.close()

2. with 문

  • open - close를 자동으로 사용해준다.
  • with를 나가면 close가 자동으로 완료되었기에 나가면 작동되지 않는다.
  • 기본 사용 방법
    with open("./file_test/새파일.txt", 'a', encoding="UTF-8") as f:
        f.write("end of file")
        data = f.readlines()
        print(data)

3. csv (comma separated values)

  • , 로 구분되는 값들을 모아놓은 파일
  • 데이터 관련해서 사용할때 활용 된다.
  • 예시)
    with open("./file_test/data.csv", "w", encoding="UTF-8") as f:
        f.write("날짜, 날씨, 기온\n")
        f.write("20230424, 맑음, 10\n")
        f.write("20230425, 비, 10\n")
profile
공부해보자

0개의 댓글