Python 정리
파이썬 - 파일처리
dawon-project
2025. 2. 8. 18:09
- 파일(File) : 컴퓨터에서 데이터를 저장하는 기본 단위
- 관련 정보 자료들의 집합에 이름을 명명한 것
- 텍스트, 이미지, 비디오 등의 정보를 포함 가능
- 파일은 일반적으로 보조기억장치(HDD, SSD, USB 등)에 저장
- 파일 이름과 확장자로 식별
- 파일 구성
- 이름(Name) : 파일 식별을 위한 문자열
- 데이터(Data) : 파일의 내용 ex) 텍스트, 이미지, 비디오 등 다양한 형태
- 메타데이터(Metadata) : 파일의 정보 ex) 파일 크기, 생성날짜, 수정 날짜, 접근 권한 등
- 파일 분류
- 텍스트 파일 : 사람이 읽을 수 있는 문자 형태로 저장된 파일
- .txt/ .csv/ .html 등
- 텍스트 에디터를 사용하여 내용 확인 가능
- 바이너리 파일 : 기계가 이해할 수 있는 이진 형식으로 저장된 파일
- .exe/ .jpg/ .mp3 등
- 내용 확인을 위해서는 특화된 전용 프로그램 필요
- 텍스트 파일 : 사람이 읽을 수 있는 문자 형태로 저장된 파일
- 파일 시스템 (File System)
- 운영 체제에서 파일을 저장, 관리, 검색하는 시스템
- 파일에 접근하려면 관리 도구나 프로그래밍 언어를 사용
- 파일을 처리하기 위해서 파일 이름과 파일 경로가 필요
- 디렉터리(폴더)
- 운영체제에서 다수의 파일을 관리하기 위한 목적으로 파일을 분류하는 공간
- 디렉터리에는 다수의 파일 또는 서브 디렉터리가 존재
- 윈도우즈에는 드라이브라는 폴더와 파일을 분류할 수 있는 구조가 존재
- 파일 경로(File Path)
- 절대 경로
- 최상위 폴더부터 파일이 있는 위치까지 모두 포함하여 표현
- 드라이브부터 표현
- ex) C:/rokey/ch19/pandas/data.csv
- 상대 경로
- 현재 작업 디렉터리를 기준으로 상대적인 위치를 표현
- 상위 경로의 표시를 위해서 [.],[..]을 사용
- . : 현재 경로를 의미
- .. : 상위 경로를 의미
- 파이썬 코드를 사용하여 현재 작업 디렉터리를 확인하는 방법 -> os.getcwdI()
- 절대 경로
- 인코딩(Encoding)
- 데이터를 컴퓨터가 이해할 수 있는 바이너리 형식으로 변환하는 것
- ASCII
- 미국에서 표준화한 정보 교환용 7비트 부호 체계
- 유니코드(Unicode)
- 16비트 32비트 문자 체계, 모든 문자를 다루도록 설계된 국제 표준 문자 전산 처리 방식
- 한글 인코딩
- CP949(확장 완성형) 또는 MS949, WINDOWS949라고도 불림
- UTF-8(유니코드)
- 유니코드를 인코딩하는 방식 중 하나
- ASCII
- 데이터를 컴퓨터가 이해할 수 있는 바이너리 형식으로 변환하는 것
- 디코딩(Decoding)
- 바이너리 형식에서 사람이 이해할 수 있는 문자로 변환하는 것
- 파일 열기(생성) 하기
- open() : 내장 클래스
- 파일 객체 생성. 이후 , 파일 객체의 멤버 함수를 사용하여 입출력 작업 수행
- 형식 > 파일객체명 = open(경로/파일이름, 파일 열기 모드)
- 파일 열기 모드
- r : 읽기 모드 -> 파일을 읽을 때 사용
- w : 쓰기 모드 -> 파일에 내용을 쓸때 사용
- 파일이 이미 존재하는 경우, 원래 내용이 삭제
- 파일이 없는 경우 새로운 파일 생성
- a : 추가 모드 -> 파일의 마지막에 새로운 내용을 추가할 때 사용
- 파일이 없는 경우 새로운 파일 생성
- 파일을 저장할 때에는 내용을 특정 방식을 통해 인코딩함
- 파이썬은 운영체제에서 사용하는 방법으로 기본 인코딩 수행
- 윈도우즈 인코딩 방식 : CP949
- 기본 인코딩 방식이 아닌 다른 형태로 파일을 읽고 쓰려면 인코딩 방식을 지정해야함
- 비주얼 스튜디오 코드의 기본 인코딩 : UTF-8
- 인코딩 방식이 일치 하지않으면 한글이 깨져서 보일 수 있다.
- open() : 내장 클래스
- 파일 쓰기 -> 파일 열기모드가 "w" or "a" 이어야함
- write() 메서드
- 프로그램의 출력 값을 파일에 쓰기
- 리턴 값은 저장된 문자의 바이트 수
- 형식 > 파일객체명.write(data)
- write() 메서드
- 파일 읽기 -> 파일 열기모드가 "r" 이어야함
- 파일을 읽을때 사용하는 다양한 함수들은 파일 포인터(file pointer)를 이용해서 데이터를 읽는다.
- 파일 포인터는 파일의 현재 읽는 위치를 추적하기 때문에
- 파일을 다시 읽기 위해서는 파일 포인터를 초기화하거나 파일을 다시 열어야한다.
- seek(x) : 파일 포인터를 원하는 위치로 이동시키는 함수
- seek(0) : 파일 포인터를 처음으로 되돌리는 역할
- readline() 메서드
- 파일의 line을 읽어서 결과값을 반환
- 형식 > 파일객체명.readline()
- readlines() 메서드
- 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 반환
- 형식 > 파일객체명.readlines()
- read()메서드
- 파일의 내용 전체를 문자열로 반환
- 형식 > 파일객체명.read()
- 파일을 읽을때 사용하는 다양한 함수들은 파일 포인터(file pointer)를 이용해서 데이터를 읽는다.
- 파일 닫기
- close()메서드
- 열려 있는 파일 객체를 닫고 사용한 자원을 반환
- 형식 > 파일 객체명.close()
- close()메서드
- 자동 파일 닫기
- with .. as 문
- 파일을 열고 닫는 것을 자동으로 처리
- 형식 > with open(파일경로, 모드) as 파일 객체:
처리 코드 블록
- with .. as 문
-> 각 함수에 맞는 파일 열기 모드가 아닐 경우 오류 발생한다.
->위와 같이 쓰기의 인코딩 방식과 읽기의 인코딩방식을 일치하지 않을 떄 발생하는 오류
-> 위와 같이 쓰기의 인코딩 방식과 읽기의 인코딩방식을 일치 시켜야한다.