본문 바로가기
프로그래밍 언어/파이썬

11.파일

by Jinger 2023. 3. 13.

서론

     대회에서나 실생활에서 많이 사용될 파일(txt, 메모장)을 열고 닫고, 쓰는 키워드와 함수에 대해 배워보자.


열고 닫기

    기본적으로 파일에 접근하기 위해서는 파일을 열어야 하고, 끝날 때에도 잊지 말고 꼭 닫아줘야 한다.

파일 객체 = open(문자열 : 파일 경로, 문자열 : 읽기 모드)     #파일 열기
#이곳에 파일 관련 코드 작성
파일 객체.clse()      #파일 닫기
    읽기 모드에는 아래와 같은 모드들이 있다.
모드 설명
w Write 모드(새로 쓰기 모드)
a Append 모드(뒤에 이어서 쓰기 모드)
r Read 모드(읽기 모드)
r+ 읽기와 쓰기 모드
file = open('basic.txt', 'w')   #프로그램과 같은 폴더에 “basic.txt”가 생성
file.write('Hello Python progamming')   #파일에 텍스트 쓰기
file.close()
#프로그램이 종료될 때는 열려 있는 파일을 모두 작동으로 닫고 종료됩니다. 그렇다고 close() 함수를 따로 사용하지 않아도 되는 것은 아니다

 

쓰기

    write() 함수를 통해 파일에 글을 쓸 수 있다. "파일객체.write(쓸 글)"형식으로 사용된다.

file = open('basic.txt', 'w')
file.write('Hello Python progamming')   #파일에 텍스트 쓰기
file.close()

읽기

   read()함수를 통해 파일에 글을 읽을 수 있다. "파일 객체.read()"형식으로 사용된다.
file = open('basic.txt', 'w')
contents = file.read()
file.close()
print(contents)

with

     with키워드는 파일을 열고 닫지 않는 실수를 하는 경우를 방지하기 위해 사용된다. "with open(파일 이름: 파일 경로, 문자열: 모드) as 파일 객체:"형식으로 사용된다. 파일 경로는 기본이 해당 파이썬 파일과 동일한 파일이며, 만약 다른 위치에 있는 파일에 접근하기 위해서는 “C:\???\???\???\파일이름.txt”과 같은 형식으로 붙이면 된다.
with open('basic.txt', 'r') as file:
  contents = file.read()
print(contents)

기타

    파이썬 파일과 관련된 함수에는 아래와 같은 것들이 있다.

tell() : 현재 위치 알려주는 함수
seek(pos) : pos 위치 표시자로 조작
dump() : 딕셔너리 해당 모듈로 압축(확장자 .p)
load() : 저장된 딕셔너리 복원
예시
with open('info.txt', 'r') as file:
for line in file:
   (name, weight, height) = line.strip().split(',')   #변수 선언
  
   if (not name) or (not weight) or (not height):   #잘 못 입력되어 있는 경우 skip
      continue
   bmi = int(weight) / (int(height)**2)
   result = ""

   if 25<=bmi:
      result=“과체중”
   elif 18.5<=bmi
      result=“정상 체중” 
   else:
      result = “저체중”

   print('\n'.join(["이름: {}", "몸무게: {}", "키: {}", "BMI: {}", "결과: {}"]).format(name, weight, height, bmi, result))

주섬주섬

     가끔 txt파일로 어느 형식에 맞게 답을 적으라는 교수님이 있는 데, 이러한 간단한 코드를 이용하여 채점하기 위해서 사용되기도 한다. 실제로 사용하거나 대회에 나갈 생각이 없다면 이런 게 있구나 하고 넘어가도 된다.

참고

- 파이썬 공식 문서

반응형

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

파이썬 turtle 정리  (2) 2024.01.05
12.기타  (1) 2023.03.20
10.예외처리  (0) 2023.03.13
9.클래스  (0) 2023.03.07
8.모듈  (0) 2023.03.02

댓글