1. 파일의 이해
2. 파일의 활용
1. 파일의 이해
(1) 파일의 역할
- 컴퓨터에 의해 처리될 또는 처리된 데이터와 정보가 임시적으로 저장된 상태를 파일이라고 한다.
- 일련의 연속된 바이트로 볼 수 있고, 프로그램(파이썬 소스코드)에 읽혀 가공 및 처리가 파일의 역할이다.
(2) 파일의 구성
- 파일은 연속된 바이트의 형태로 기록이 됨.
- 연속된 바이트와 파일의 시작, 파일 포인터(현재 위치), 파일의 끝(EoF)과 같은 요소들로 구성이 되어있음
(3) 파일의 종류
- 데이터가 저장되는 방식에 따라 구분이 된다. ( 대표적 2가지 텍스트, 바이너리 )
- 가장 크게 구분 할 수 있는건, 메모장으로 해당 파일이 열리면 텍스트 파일 안열리면 바이너리 파일이다.
[1] 텍스트 파일
- 사람이 읽을 수 있는 문자로 구성이된 파일을 의미한다.
- 코드, 설정 파일, 로그 등이 있음.
[2] 바이너리 파일
- 사람이 읽기 어려운 이진 데이터로 구성된 파일이다.
- 텍스트로 해석되지 않고, 특정 프로그램이 해석을 해서 사용을 한다.
- 이미지, 오디오, 실행 파일 등이 있음. JPEG, MP3
- 쉽게말해, 텍스트 파일은 코드 파일이 될 수 있고, 컴파일러를 통해 컴파일이 되면 바이너리 코드가 만들어짐.
- 전용 실행기 즉, 런타임을 제공해주는 프로그램이 읽어서 기계어로 변환하며 프로그램이 실행됨.
- 쉽게말해, 이미지는 이미지 보여주는 프로그램, 동영상 편집기, 등등 이러한 프로그램들이 런타임임.
(4) 파일 함수
- 거의 모든 언어가 파일을 다룰 수 있는 함수를 제공을 해주고 있음. 파이썬도 마찬가지임.
- 파일의 시작, 파일 포인터, 파일의 끝을 활용하여 데이터 읽기, 쓰기를 위한 함수 및 메소드를 내장
- 라이프 사이클에 맞춰 파일 객체를 생성, 사용, 삭제를 할 수 있다.
# 파일 객체 생성
file_object = open("example.txt", "w")
- 물리적인 파일과 연결된 파일 객체를 생성하고 참조변수에 할당
- 'r' : 읽기 용도
- 'w' : 새로운 파일을 쓰기 용도
- 'a' : 파일의 끝에 데이터를 덧붙이기 용도
(5) 파일 이름
- 파일 이름에는 해당 파일에 접근하기 위한 모든 정보가 다 들어있음.
- 해당 파일의 현재 위치 정보 또한 파일 이름이 가지고 있음. ( /var/etc/python.py 형태 )
- 파일 이름은 파일의 고유 식별자 역할 및 저장장치 내부에서 파일의 위치를 표현하는 파일경로를 내포 하고 있음.
(6) 파일 읽기
- 특정 범위의 데이터를 파일에서 읽고 문자열로 반환함.
- 파일을 읽는 과정에서 파일 포인터도 같이 이동을 하면서 읽게 된다.
file = open("경로/파일명.txt", "r") # 1. 파일을 '읽기' 모드로 엶
content = file.read() # 2. 파일 포인터가 처음(0번째)부터 끝까지 쭉 읽음
file.close() # 3. 파일 닫음
- open("파일", "r")을 하면 파일을 열지만, 아직 읽지는 않는다.
- read()를 호출하면, 그 순간부터 포인터가 파일의 처음부터 끝까지 이동하면서 읽는다.
- 이후 다시 read()를 하면? 이미 포인터가 끝에 가 있어서 빈 문자열이 나온다는 점!
- close() 함수를 통해 파일을 닫아줘야한다.
[1] close() 함수 호출 이유
- 파일 자체는 외부 자원이기 때문에 가비지 컬렉터가 지워줄 수 없음.
- 이유는, 같은 메모리 공간이 아니기 때문임. 메모리 공간에 다른 곳에서 파일이 열려 있는 상태로 유지가 됨.
- 즉, close() 함수 호출을 하지 않게 되면, 결국 파일이 닫히지 않는 상태로 유지가 되어있게 됨.
- 운영체제에는 한 번에 열 수 있는 파일 개수에 제한이 있기 때문에 쌓이면, 에러가 남.
(7) 파일 쓰기
- 문자열을 파일 포인터가 위치한 지점에 기록
- w 모드는 실제로 존재하는 파일이 있어, 해당 파일이 오픈 될 시 데이터가 삭제됨.
- 즉, 실제 경로에 이미 해당 파일이 존재하는지 여부를 확인하고 만들어야함.
file = open("경로/파일명.txt", "w") # 1. 파일을 '쓰기' 모드로 엶 (없으면 생성, 있으면 내용 삭제됨)
file.write("첫 번째 줄입니다.\n") # 2. 내용을 파일에 씀
file.write("두 번째 줄도 추가해요.") # 3. 계속 작성 가능
file.close() # 4. 파일을 닫고, 버퍼된 내용 저장됨
- 첫번째 open에 w 모드를 이용하면, 쓰기 모드로 공백의 파일을 생성하여 제일 첫번쨰 위치에 파일포인터가 가게된다.
- 마찬가지로 close()를 호출해서 파일을 닫아줘야 메모리에 파일이 디스크에 저장이 된다.
(8) 데이터 추가
- 파일의 끝에 데이터를 덧붙이는 작업
- 파일 오픈 후 파일 포인터를 EoF(End of File : 파일의 끝)로 이동
- 존재하지 않는 파일은 write와 동일하게 새롭게 만들어서 공백 첫번쨰 위치에 파일포인터
file = open("경로/파일명.txt", "a") # 1. 파일을 '이어쓰기' 모드로 엶 (없으면 새로 생성됨)
file.write("세 번째 줄이 추가됩니다.\n") # 2. 기존 내용 뒤에 덧붙임
file.close() # 3. 닫으면서 저장 완료
- 해당 파일에 데이터를 추가할 수 있도록 도와준다.
'⚡Python' 카테고리의 다른 글
[Python] 10강 - 모듈 (0) | 2025.04.21 |
---|---|
[Python] 10강 - 객체지향 (1) | 2025.04.18 |
[Python] 9강 - 함수 (0) | 2025.04.17 |
[Python] 파이썬 인터프리터(Interperter) 쉽게 이해하기 (1) | 2025.04.17 |
[Python] 7강 - 반복 구조 (0) | 2025.04.17 |