open()함수는 엑셀이나 데이터베이스를 여는 함수다. close() 안해주면 메모리 계속 소비됨
매개변수는 첫번째, 파일의 경로 ("C://Users/Home/Documents/text.txt" 등)
두번째, 파일 열기 방식 (읽기, 쓰기 모드 등)
세번째, 인코딩 방식
두번째 매개변수를 정리해보면
'r': 읽기용
'w': 쓰기용 (이미 같은 경로에 파일이 존재하면 파일 내용을 지움)
'a': 쓰기용으로 열기, 근데 'w'랑 다르게 이미 같은 경로에 파일이 존재하면 내용 덧붙이기
'x': 배타적 생성모드, 파일이 이미 존재하면 예외를 일으킴
'rb': 바이트 어레이 일기
'wb': 바이트 어레이 쓰기
세번째 매개변수인 인코딩의 종류는 encoding="utf-8" 등의 형태로 씀
ASCII
・ 미국 정보 교환 표준 부호
・ ASCII는 8비트만을 이용하여 음이 아닌 수(0~127)에 문자를 할당, 61 = '=', 65 = 'A', 97 = 'a'
・ 52개의 알파벳 대소문자, 10개의 숫자, 32개의 특수문자, 하나의 공백 문자, 33개의 출력
・ 불가능한 제어문자로 128개 문자를 표현, 한글은 안됨
ISO/IEC 8859-1
・ 8비트를 사용해서 256(2^8)개의 문자를 표현
ISO/IEC 8859-N
・ 중앙유럽어, 남유럽어, 북유럽어, 아랍어 등을 지원
DBCS(Double-Byte-Character Set)
・ 2바이트(16비트)를 활용해서 문자 집합을 구성하는 방법
・ 최대 65,536(2^16)개의 문자를 할당할 수 있고, 한글(총 11,172자), 중국과 일본의 문자를
컴퓨터로 표현 가능
・ DBCS는 ASCII와의 호완을 유지하기 위해 최상위 비트가 0이면 ASCII, 1이면 DBCS로 인식
・ 한글 문자 집합 표준으로는 KS X 1001, EUC-KR, CP949 등이 있다.
유니코드
・ 문자 집합 하나로 모든 문자를 표현할 수 있게 하는 것이 목적
・ 초기에는 전세계의 언어별 문자들을 2바이트 안에서 영역을 나눠 할당
・ 누락된 문자와 기호를 계속 추가하다 보니 2바이트를 넘어섬
UTF(Unicode Transformation Format)
・ 유니코드 변환 인코딩 형식
・ UTF-8은 코드포인트의 크기에 따라 1바이트에서부터 4바이트까지 가변폭으로 인코딩하므로,
1바이트로 표한가능한 U+0000(십진수 0)부터 U+007F(십진수 127)까지는 ASCII와 완벽하게
호환
・ UTF-8 인코딩 방식으로 저장된 문서는 유니코드를 알지 못하는 시스템에서도 사용 가능
・ UTF-8 외에도 UTF-7, UTF-16, UTF-32 인코딩 등이 있음
파일 경로 설정
1. 절대 경로
・ 파일의 경로를 루트(가장 기본이 되는 폴더)부터 직접 기재하는 방식
・ 윈도우의 경우 폴더 구분 기호를 ₩를 사용하고 리눅스나 맥 등은 /를 사용
・ ₩는 escape문자이기 때문에 ₩₩로 입력해야 됨
2. 상대 경로
・ 파일의 경로를 현재 위치로부터 상대적으로 입력
・ ./ : 현재 폴더를 의미, 생략해도 무방
・ ../ : 상위 폴더를 의미
import os
os.getcwd()
로 현재 경로를 확인할 수 있다.
다 설정해서 파일을 읽을 때
1. read() : 파일 전체 내용을 문자열로 반환
file = open('/users/imsunghan/desktop/test.txt', 'r')
text = text.read()
file.close
2. readlines() : 파일의 모든 줄을 읽고, 각 줄을 요소로 가지는 리스트 반환
file = open('/users/imsunghan/desktop/test.txt', 'r')
text = text.readlines()
file.close
3. readline() : 파일의 첫 줄을 읽고 문자열 반환, 재호출시 그 다음 줄의 문자열 반환
file = open('/users/imsunghan/desktop/test.txt', 'r')
text = text.readline()
file.close
4. For문으로 읽기 : 반복문으로 읽으면 줄 별로 처리 가능
file = open('/users/imsunghan/desktop/text.txt', 'r')
for i in file:
print(i)
file.close
파일 쓰는 법
file = open('/users/imsunghan/desktop/test2.txt', 'w')
text = file.write('연습')
file.close
이미 있는데 w 쓰면 원래 거 삭제되니 안전하게 x로 하는 게 낫다. x로 했을 때 이미 있으면 에러
추가할 땐 a로
open() 함수와 함께 with ~ as 문을 사용하면 명시적으로 close() 함수를 호출하지 않아도 항상
닫힌다.
with open('text.txt', 'r') as file:
text = file.read()
print(text)
import os
dir_list = os.listdir("./") //현재 디렉토리 안에 있는 하위 디렉토리와 하위 파일리스트를 리스트로 반환
// 앞에 . 이 붙은 파일은 숨겨진 파일인데 listdir()하면 다 나옴
for name in dir_list:
print(name)
# 디렉토리 생성
os.mkdir("test")
'파이썬' 카테고리의 다른 글
6주차, 병렬처리, 프로세스, 쓰레드 (0) | 2022.01.28 |
---|---|
6주차, 직렬화(인코딩) pickle, json (0) | 2022.01.28 |
6주차, 파이썬 클래스 활용 (0) | 2022.01.27 |
6주차, 파이썬 예외처리, raise, assert (0) | 2022.01.27 |
6주차, 파이썬 추상클래스, isinstance() 함수 (0) | 2022.01.26 |
댓글