JAMONGPROJECT
[DAY17] 파일 입출력 본문
파일 입/출력
1 읽기/쓰기와 인코딩
파일처리
파이썬에서 운영체제에 파일처리를 요청하면 운영체제가 요청한 업무를 수행해주고 그 결과를 돌려줌
Open() 함수
Open 함수의 매개 변수에 대해 알아보자.
open(parameter1, parameter2, parameter3)
여기서 첫번째 매개변수는 파일의 경로 (예시-” C:/Users/Home-PC/Documents/test.txt”)
두번째 매개변수는 파일 열기 방식 (읽기 모드, 쓰기 모드 등)
세번째 매개변수는 인코딩 방식
파일 열기 방식
두번째 매개변수인 파일 열기 방식에 대해 자세히 알아보자.
‘r’ : 읽기용
‘w’: 쓰기용 (주의: 이미 같은 경로에 파일이 존재하면 파일 내용을 지워버림)
‘a’: 쓰기용으로 열기. 단, ‘w’와는 달리 이미 같은 경로에 파일이 존재할 경우 내용 덧붙이기
‘x’: 배타적 생성모드. 파일이 이미 존재하면 예외를 일으킴.
‘rb’: 바이트 어레이 읽기
‘wb’: 바이트 어레이 쓰기
인코딩
ASCII, 아스키 코드
- 미국 정보 교환 표준 부호
- ASCII는 7비트만을 이용하여 음이 아닌 수(0~127)에 문자를 할당. 예) 61에 ‘=‘를, 65에 ‘A’를 97에 ‘a’를 할당.
- 52개의 알파벳 대소문자, 10개의 숫자, 32개의 특수문자, 하나의 공백 문자, 33개의 출력 불가능한 제어문자로
128개 문자를 표현.
ISO/IEC 8859-1
8비트를 사용하여 256(28)개의 문자를 표현
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. 상대 경로
- 파일의 경로를 현재 위치로부터 상대적으로 입력
- ./ : 현재 폴더를 의미. 생략해도 무방.
- ../ : 상위 폴더를 의미.
파일읽기
1. read() 함수 : 파일 전체 내용을 문자열로 반환
file = open('C:/Users/Home-PC/Documents/test.txt','r')
text = file.read()
file.close()
2. readlines() 함수: 파일의 모든 줄을 읽고 각 줄을 요소로 갖는 리스트 반환
file = open('C:/Users/Home-PC/Documents/test.txt','r')
text = file.readlines()
file.close()
3. readline 함수 : 파일의 첫 줄을 읽고 문자열 반환. 재호출시 그 다음 줄의 문자열 반환
file = open('C:/Users/Home-PC/Documents/test.txt','r’)
line1 = file.readline()
line2 = file.readline()
file.close()
4. For 문으로 읽기 : for 제어문으로 읽을 시 줄 별로 문자열로 읽어서 반환
file = open('C:/Users/Home-PC/Documents/test.txt','r')
for i in file:
print(i)
file.close()
파일쓰기
file = open('C:/Users/Home-PC/Documents/test2.txt',’w’) # w를 입력하여 쓰기모드로 실행
text = file.write(‘연습')
file.close()
With ~as
open() 함수와 함께 with ~ as문을 사용하면 명시적으로 close() 함수를 호출하지 않아도 파일이 항상 닫힘.
예시)
with open('test.txt', ‘r ‘) as file:
text = file.read()
print(text)
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #수강료0원챌린지 #환급챌린지 #직장인인강 #직장인자기계발
#패캠인강후기 #패스트캠퍼스후기 #오공완
#한번에끝내는컴퓨터공학전공필수&인공지능심화초격차패키지Online
'Challenge > FASTCAMPUS 30일 챌린지' 카테고리의 다른 글
[DAY19] 병렬 처리 (0) | 2023.03.10 |
---|---|
[DAY18] 파일 입출력 (0) | 2023.03.09 |
[DAY16] 상속과 예외처리 (0) | 2023.03.07 |
[DAY15] 상속과 예외처리 (0) | 2023.03.06 |
[DAY14] 상속과 예외처리 (0) | 2023.03.05 |