-
[python] 파일 쓰기 write()와 읽기read()/ 파일 열기 함수 open() /파일 읽기 readlines()와 readline()/ 파일 읽기의 예외 처리/ mode='x'/바이너리Languages/python 2021. 5. 30. 15:47반응형
예제) 파일에 파이썬 철학 세 줄을 쓴 후
다시 읽기 모드로 파일을 열어 그내용을 전체를 읽어 콘솔에 출력
파일은 노트패드로도 열 수 있다
f = open('pyzen.txt','wt') f.write('파이썬 철학\n') f.write('아름다움이 추한 것보다 낫다.\n') f.write('명시적인 것이 암묵적인 것보다 낫다.\n') f.close() f = open('pyzen.txt', mode='r') s = f.read() print(s) f.colse()
실행결과
파이썬 철학
아름다움이 추한 것보다 낫다.
명식적인 것이 암묵적인 것보다 낫다.
파일 열기 함수 open()
함수 open()의 첫 두 인자는 file과 mode
위치 인자와 키워드 인자 모두 가능
open(file, mode='r', ... )
파일명 : file인자는 참조하려는 파일의 이름이 들어있는 문자열 값
모드 : mode는 파일을 열어 처리하는 모드
즉 읽기(r) , 쓰기(w), 추가(a) 등을 결정
기본 파일 엑세스 모드는 일기(r), 파일에서 읽으려면 생략 가능
파일 읽기 readlines()와 readline()
readlines()
파일 전체 내용 한 줄 한 줄의 항목으로 구성된 리스트를 반환
readline()
한 줄의 문자열을 읽어 반환
f = open('pyzen.txt','r') while True: line = f.readline() if not line:break print(line, end='') f.close()
실행결과
파이썬 철학
아름다움이 추한 것보다 낫다.
명식적인 것이 암묵적인 것보다 낫다.
파일 읽기의 예외 처리(1)
쓰기 모드인 'w'로 open('filename', mode='w')
이미 파일이 있다면 fileline으로 기존의 내용을 모두 무시하고 덮어 쓴다
파일이 없다면 filename으로 새로운 파일을 생성
읽기 모드인 'r'로 open(... mode='r')
파일이 없다면 FileNotFoundError
파일 읽기의 예외 처리(2)
try: f=open('pyzen.txt',mode='r') except FileNotFoundError as e: print(e) print('파일 읽기 실패!'.center(30,'*')) else: for line in f.readlines(): print(line.strip('\n')) f,close() print('파일 읽기 완료! '.center(30.'*')) finally: print('프로그램 종료!'.center(30,'*'))
실행결과
파일이 있는 경우
파이썬 철학
아름다움이 추한 것보다 낫다.
명식적인 것이 암묵적인 것보다 낫다.
*******파일 읽기 완료! **********
******* 프로그램 종료! **********
파일이 없는 경우
*******파일 읽기 실패! **********
******* 프로그램 종료! **********
with open(...) as file 구문
close() 호출 없이 자동으로 파일을 닫아줌
with open('data.txt',mode='w') as file: file.write('파이썬') ... 3 with open('data.txt',mode='r') as file: print(file.read()) ... 파이썬
파일 쓰기엣 기본 파일에 덮어 쓰는 것을 방지하려면 mode='x'사용
파일 열기의 mode='w'
파일이 없다면 새로 만들고, 이미 파일이 잇다면 새로이 내용을 덮어써 이전 내용이 모두 사라짐
파일 열기의mode='x'
모드 x는 배타적 생성이라고 하면 exclusive 의 x를 사용
새로운 파일에만 기록하면, 이미 파일이 잇다면 FileExistsError 예외가 발생
여러 줄을 파일에 출력하는 함수 writelines()와 file자체를 이용한 줄 일기
lst = ['파일 처리 모드\n',"mode='x'\n","mode='rt'\n"] try: with open('mode.txt',mode='x') as file: file.writelines(lst) print('파일 쓰기 완료!'.center(30.'*')) except FileExistError as e: print(e) print('파일 쓰기 실패!'.center(30,'*')) else: with open('mode.txt',mode='rt') as file: for line in file: print(line, end='') print('파일 읽기 완료!'.center(30,'*'))
실행결과
정상 실행
*******파일 쓰기 완료! **********
파일 처리 모드
mode='x'
mode='rt'
*******파일 읽기 완료! **********
이미 mode.txt파일이 존재 한다
*******파일 쓰기 실패! **********
바이너리 파일 쓰기
표준 모듈 pickle을 사용
파이썬의 다양한 자료형 그대로 파일로 저장
모듈 pickle을 import
파일을 열어 변수 f에 저장, wb는 쓰기, 바이너리를 의미
바이너리 자료의 출력은 pickle의 함수 dump(자료,파일)로 파일에 자료를 출력
바이너리 파일의 특징은 노트패드와 같은 텍스트 편집기로는 내용을 볼 수 없음
with open('dicmouth.pic',mode='wb') as f: pk.dump(mouth,f) pk.dump(lst,f)
바이너리 파일 읽기
with open('dicmmouth.pic',mode='rb') as f: dmon = pk.load(f) pl = pk.load(f)
파일 이름 수정 rename()과 삭제 remove()
import os os.rename('pyfile.txt', '파일수정삭제.txt') os.remove('파일수정삭제.txt')
현재 폴더 하부 목록 출력
import os dname = os.getcwd() print('현재폴더:', dname) fs = os.listdir(dname) for f in fs: if os.path.isfile(f): print('\t파일:',f) elif os.path.isdir(f): print('\t폴더:',f)
반응형'Languages > python' 카테고리의 다른 글
[python] 상속과 클래스 (0) 2021.06.05 [python] 객체 지향 프로그래밍, 간단한 클래스의 정의와 활용, 내장 함수 isinstance, 매직 메소드(magic method) (0) 2021.06.05 [python] 실행 오류 및 파일을 다루는 예외 처리와 파일 입출력 (0) 2021.05.26 [python] tutle/numpy 를 이용한 다양한 예제들 (0) 2021.05.26 [python]tkinter/캔버스에 직선 그리기/이미지 파일을 컨버스에 생성/이미지를 레이블 위에 생성/pygame/Hello,Pygame (0) 2021.05.20