- 작성자
파일이 뭔가요?
파일 = 디지털 서류
파일은 컴퓨터 안에 정보를 담아두는 디지털 서류입니다.
현실 세계에서 생각해 봅시다:
- 회사에서 보고서를 작성하면, 종이에 인쇄해서 보관합니다
- 사진을 찍으면, 사진 인화지에 인쇄해서 앨범에 넣습니다
- 좋아하는 노래가 있으면, CD에 담아서 보관합니다
컴퓨터에서도 똑같습니다:
- 보고서를 작성하면, 파일로 저장합니다 →
보고서.docx - 사진을 찍으면, 파일로 저장합니다 →
여행사진.jpg - 음악을 받으면, 파일로 저장합니다 →
좋은노래.mp3
종이 서류가 현실 세계의 정보 저장 방법이라면, 파일은 컴퓨터 세계의 정보 저장 방법입니다.

파일이 없다면?
만약 컴퓨터에 파일이라는 개념이 없다면 어떻게 될까요?
전원을 끄면 모든 것이 사라집니다.
지금 쓰고 있던 문서? 사라집니다. 어제 찍은 사진? 사라집니다. 3시간 동안 작업한 엑셀? 사라집니다.
실제로 초기의 컴퓨터가 이랬습니다. 전원을 끄면 메모리에 있던 모든 데이터가 날아갔습니다. 이것은 마치 칠판에 글을 쓰고 있는데, 누가 와서 지워버리는 것과 같습니다.
파일은 칠판이 아니라 공책에 적는 것입니다. 전원을 꺼도, 컴퓨터를 재시작해도, 파일은 그대로 남아 있습니다.

핵심 포인트
파일이 없다면, 컴퓨터는 계산기에 불과합니다. 계산은 할 수 있지만, 결과를 어디에도 저장할 수 없습니다. 파일이 있기 때문에 컴퓨터가 진짜로 유용한 도구가 된 것입니다.
파일 안에는 뭐가 들어있을까?
텍스트 파일: 글자가 그대로 들어있습니다
가장 단순한 파일은 텍스트 파일(.txt)입니다. 메모장을 열고 "안녕하세요"라고 쓰고 저장하면, 파일 안에는 정말로 "안녕하세요"라는 글자만 들어 있습니다.
안녕하세요
오늘 날씨가 좋습니다.
내일 만나요.
이것이 파일의 전체 내용입니다. 숨겨진 것이 없습니다. 사람이 읽을 수 있는 글자 그 자체가 파일에 저장됩니다.

이미지 파일: 점(픽셀)마다 색상 숫자가 들어있습니다
이미지 파일은 어떨까요?
스마트폰 화면을 돋보기로 엄청나게 확대하면, 아주 작은 점들이 빽빽하게 모여있는 것이 보입니다. 이 점 하나하나를 픽셀(pixel)이라고 합니다.
이미지 파일에는 모든 픽셀의 색상 정보가 숫자로 저장되어 있습니다.
각 픽셀의 색상은 빨강(R), 초록(G), 파랑(B) 세 숫자의 조합으로 표현합니다:
(255, 0, 0) → 빨간색 (빨강만 최대)
(0, 0, 255) → 파란색 (파랑만 최대)
(255, 255, 255) → 흰색 (전부 최대)
(0, 0, 0) → 검정색 (전부 0)
아주 작은 4x4 이미지를 예로 들면, 파일 안에는 이런 식으로 점 16개의 색상이 전부 저장되어 있습니다:
1행: 빨강 빨강 흰색 흰색
2행: 빨강 빨강 빨강 흰색
3행: 흰색 빨강 빨강 빨강
4행: 흰색 흰색 빨강 빨강
사진 앱은 이 숫자들을 하나씩 읽으면서 화면에 점을 찍어나갑니다. 그 결과 우리 눈에 하나의 이미지가 보이는 것입니다.
스마트폰으로 찍는 사진은 보통 1200만 픽셀(1200만 개의 점)입니다. 점 하나마다 색상 숫자가 저장되어 있으니, 사진 파일 용량이 큰 이유를 이제 이해할 수 있습니다.

음악 파일: 시간마다 소리 크기가 들어있습니다
이미지가 공간(픽셀)마다 색상을 저장한다면, 음악은 시간마다 소리 크기를 저장합니다.
소리는 공기의 떨림입니다. 이 떨림의 세기를 아주 짧은 시간 간격으로 숫자로 기록하면 음악 파일이 됩니다.
0.00초: 0 (조용)
0.01초: 3200 (소리 시작)
0.02초: 12800 (점점 커짐)
0.03초: 28000 (큰 소리)
0.04초: 12800 (점점 작아짐)
0.05초: 0 (다시 조용)
음악 앱은 이 숫자들을 순서대로 읽으면서 스피커를 떨게 합니다. 숫자가 크면 세게 떨고, 작으면 약하게 떨립니다. 그 결과 우리 귀에 소리가 들리는 것입니다.
CD 음질의 음악은 1초에 44,100번 소리 크기를 기록합니다. 3분짜리 노래라면 약 800만 개의 숫자가 들어있는 셈입니다.

정리하면
패턴이 보이시나요?
텍스트 파일: 글자가 순서대로 들어있습니다
이미지 파일: 점(픽셀)마다 색상 숫자가 들어있습니다
음악 파일: 시간마다 소리 크기 숫자가 들어있습니다
영상 파일: 이미지(프레임) + 소리가 합쳐져 들어있습니다
원리는 전부 같습니다. 정보를 잘게 쪼개서 숫자로 저장한 것입니다.

핵심 포인트
모든 파일은 결국 글자 아니면 숫자입니다. 텍스트 파일에는 글자가, 이미지 파일에는 숫자가 들어있습니다. 프로그램이 이 글자와 숫자를 읽고 화면에 보여주는 것입니다.
포맷과 확장자
포맷 = 파일을 저장하는 방식
파일 안에 글자나 숫자가 들어있다는 것을 알았습니다. 그런데 같은 정보도 저장하는 방식이 여러 가지입니다.
이것을 포맷(format)이라고 합니다.
포맷을 아는 프로그램이면 열 수 있습니다
파일의 포맷(저장 방식)을 아는 프로그램이라면, 누구든 그 파일을 열 수 있습니다.
이것이 정말 중요한 개념입니다.
예를 들어 이미지 파일(.jpg)은 "픽셀 색상 정보를 이런 방식으로 저장한다"는 공개된 규칙이 있습니다. 그래서:
- 사진 앱으로 열 수 있습니다
- 포토샵으로도 열 수 있습니다
- 크롬 브라우저로도 열 수 있습니다
- 카카오톡에서도 볼 수 있습니다
JPG 포맷을 이해하는 프로그램이 많기 때문입니다.
그런데 포토샵 전용 파일(.psd)은요?
포토샵은 작업할 때 레이어, 마스크, 필터 효과 등 복잡한 정보를 저장해야 합니다. 이 정보들을 포토샵만의 방식(PSD 포맷)으로 저장합니다.
.jpg 파일 → 사진앱, 포토샵, 크롬, 카카오톡 등 다 열 수 있음 (공개된 포맷)
.psd 파일 → 포토샵만 제대로 열 수 있음 (포토샵만의 포맷)
파일이 특별해서가 아니라, 그 포맷을 읽을 줄 아는 프로그램이 적은 것뿐입니다.

그렇다면 이미지 파일을 메모장으로 열면 어떻게 될까요?
ÿØÿà JFIF ÿá Exif II* ÈÒ§ü¼ñ...
이런 깨진 글자가 나옵니다. 메모장은 텍스트 포맷만 이해하는 프로그램이기 때문입니다. 파일이 깨진 게 아니라, 한국어를 모르는 외국인에게 한국어 편지를 보여준 것과 같습니다.
확장자 = 포맷을 나타내는 이름표
파일 이름 끝에 붙은 .txt, .jpg, .mp3 같은 것을 확장자라고 합니다.
확장자는 "이 파일은 이런 포맷이에요"라는 이름표입니다.
컴퓨터는 확장자를 보고 어떤 프로그램으로 열지 결정합니다:
보고서.docx → MS Word로 열기
여행사진.jpg → 사진 뷰어로 열기
좋은노래.mp3 → 음악 앱으로 열기
파일을 더블클릭하면 자동으로 맞는 프로그램이 열리는 이유가 바로 확장자 때문입니다.

참고로, 확장자를 바꾼다고 파일이 바뀌지 않습니다. 사진.jpg를 사진.txt로 이름만 바꿔도, 안에 들어있는 숫자 데이터는 그대로입니다. 단지 컴퓨터가 메모장으로 열게 되고, 깨진 글자가 보일 뿐입니다.
핵심 포인트
- 포맷 = 파일을 저장하는 방식. 포맷을 아는 프로그램이면 열 수 있습니다
- 확장자 = 포맷을 나타내는 이름표. 컴퓨터가 어떤 프로그램으로 열지 결정합니다
- 확장자를 바꿔도 파일의 내용은 바뀌지 않습니다
텍스트 포맷의 종류들
확장자가 달라도 전부 텍스트 파일입니다
프로그래밍을 하다 보면 .json, .md, .csv, .html, .py 같은 다양한 확장자를 만나게 됩니다.
이름이 낯설어서 특별한 파일처럼 느껴질 수 있지만, 전부 텍스트 파일입니다. 메모장으로 열면 글자가 보입니다.
다만 글자를 쓰는 규칙(약속)이 다를 뿐입니다.
같은 정보를 여러 포맷으로 써보면
텍스트 파일 (.txt) — 아무 규칙 없음:
이름은 김철수이고 나이는 30살입니다. 서울에 삽니다.
JSON 파일 (.json) — 중괄호와 큰따옴표로 정리:
{
"이름": "김철수",
"나이": 30,
"사는곳": "서울"
}
CSV 파일 (.csv) — 쉼표로 구분:
이름,나이,사는곳
김철수,30,서울
이영희,25,부산
마크다운 파일 (.md) — #과 *로 문서 구조를 잡는 규칙:
# 자기소개
이름은 김철수입니다.
## 기본 정보
- 나이: 30살
- 사는 곳: 서울
전부 같은 정보를 담고 있습니다. 이름, 나이, 사는 곳. 차이점은 글자를 배열하는 약속이 다를 뿐입니다.

왜 이렇게 여러 가지가 있을까요?
용도가 다르기 때문입니다:
- JSON: 프로그램끼리 데이터를 주고받을 때 편합니다 (구조가 명확하니까)
- CSV: 엑셀처럼 표 형태의 데이터를 저장할 때 편합니다 (쉼표로 칸 구분)
- Markdown: 문서를 깔끔하게 쓸 때 편합니다 (지금 이 문서도 .md 파일입니다!)
- HTML: 웹 브라우저가 화면을 그릴 때 씁니다
- Python (.py): 컴퓨터가 실행할 수 있는 코드를 쓸 때 씁니다
핵심 포인트
확장자가 뭐든, 메모장으로 열어서 글자가 보이면 텍스트 파일입니다. .json, .md, .csv, .py, .html은 전부 텍스트 파일입니다. 글자 배열 규칙만 다를 뿐입니다.
프로그램이 뭔가요?
파일만으로는 아무 일도 일어나지 않습니다
파일은 정보를 저장하는 방법이라고 했습니다. 그런데 저장만 해서는 아무 일도 일어나지 않습니다.
서랍에 서류가 잔뜩 들어있어도, 아무도 꺼내서 읽지 않으면 쓸모가 없겠죠?
프로그램은 이 "일을 하는 사람" 역할입니다.
프로그램이란 "이런 파일이 들어오면, 이렇게 처리해라"라는 규칙(로직)의 모음입니다.
식당의 주방장을 생각해 봅시다:
- 주문서가 들어옵니다 → "비빔밥 1개" (이것이 입력)
- 주방장은 레시피에 따라 요리합니다 → 밥 짓기, 야채 썰기, 비비기 (이것이 처리 로직)
- 완성된 비빔밥이 나옵니다 (이것이 출력)
모든 프로그램이 이 구조입니다:
[파일에서 읽기] → [처리] → [결과]

| 프로그램 | 읽기 | 처리 | 결과 |
|---|---|---|---|
| 사진 앱 | 이미지 파일의 픽셀 숫자 | 숫자를 색상으로 변환 | 화면에 사진 표시 |
| 크롬 브라우저 | HTML 텍스트 파일 | 태그를 해석 | 예쁜 웹사이트 표시 |
| 엑셀 | CSV 파일의 숫자들 | 수식에 따라 계산 | 표와 계산 결과 표시 |
| 음악 앱 | 음악 파일의 숫자 | 숫자를 소리 신호로 변환 | 스피커에서 음악 재생 |
실제로 어떻게 작동할까요?
표만 보면 감이 잘 안 올 수 있으니, 두 가지 예시를 단계별로 풀어보겠습니다.
예시 1: 사진 앱으로 사진 열기
스마트폰에서 사진을 탭해서 여는 순간, 안에서는 이런 일이 일어납니다:
1단계: 파일 찾기
사진 앱이 "sunset.jpg" 파일을 찾습니다.
2단계: 파일 읽기
파일을 열어서 안에 있는 숫자들을 읽습니다.
→ (255, 180, 50), (255, 190, 60), (200, 100, 150), ...
3단계: 숫자 해석
"첫 번째 픽셀은 (255, 180, 50)이니까 주황색이군"
"두 번째 픽셀은 (255, 190, 60)이니까 좀 더 밝은 주황색이군"
→ 이런 식으로 수백만 개의 픽셀을 전부 해석합니다.
4단계: 화면에 그리기
해석한 색을 하나하나 화면의 점에 채워 넣습니다.
→ 우리 눈에는 노을 사진이 보입니다!
앞에서 배운 내용을 떠올려 보세요. 이미지 파일에는 픽셀마다 색상 숫자가 저장되어 있다고 했죠? 사진 앱의 역할은 그 숫자를 읽어서, 실제 색으로 바꿔서, 화면에 보여주는 것입니다.
파일에 들어있는 것은 여전히 숫자뿐입니다. 그 숫자를 "사진으로 보여주는 처리"를 하는 것이 사진 앱이라는 프로그램입니다.

예시 2: 브라우저로 웹사이트 열기
웹사이트 주소를 입력하면, 브라우저는 이렇게 동작합니다:
1단계: 파일 받기
서버에서 HTML 텍스트 파일을 다운로드합니다.
2단계: 파일 읽기
파일을 열면 이런 텍스트가 들어있습니다:
→ <h1>환영합니다</h1>
→ <p>오늘의 날씨는 <b>맑음</b>입니다.</p>
3단계: 텍스트 해석
"<h1>은 큰 제목이니까 크고 굵게 표시하자"
"<b>는 강조니까 굵은 글씨로 표시하자"
→ 각 태그의 규칙에 따라 해석합니다.
4단계: 화면에 그리기
해석한 결과를 예쁘게 배치합니다.
→ 우리 눈에는 깔끔한 웹사이트가 보입니다!
우리가 보는 예쁜 웹사이트의 원본은 그냥 텍스트 파일입니다. 브라우저라는 프로그램이 그 텍스트를 읽고 해석해서, 예쁜 화면으로 바꿔주는 것입니다.

두 예시의 공통점이 보이시나요?
- 파일에서 데이터를 읽고 (숫자든, 텍스트든)
- 정해진 규칙에 따라 처리하고 (색으로 바꾸기, 태그 해석하기)
- 결과를 보여준다 (화면에 사진, 화면에 웹사이트)
이것이 모든 프로그램이 하는 일입니다. 프로그램이 다르면 같은 파일도 다르게 처리됩니다. 그래서 사진 앱은 사진을 보여주고, 음악 앱은 소리를 들려주는 것입니다.
프로그램도 파일입니다
재미있는 사실이 있습니다. 프로그램 자체도 파일입니다.
스마트폰에서 앱을 "설치"한다는 것은 프로그램 파일을 다운로드하는 것이고, 앱을 "삭제"한다는 것은 그 프로그램 파일을 지우는 것입니다.
그리고 프로그램 파일의 핵심인 코드도 텍스트 파일입니다.
일반 텍스트 파일 (편지.txt):
안녕하세요 철수 씨,
오늘 날씨가 좋네요.
코드 파일 (hello.py):
def greet(name):
message = "안녕하세요, " + name + "님!"
print(message)
greet("철수")
둘 다 글자입니다. 차이점은 코드에는 정해진 규칙(문법)이 있다는 것입니다. 일반 편지는 문법이 좀 틀려도 상대방이 이해하지만, 코드는 규칙이 하나라도 틀리면 작동하지 않습니다.
코드 파일을 메모장으로 열면? 그냥 글자가 보입니다. 색상도 없고 특별한 것도 없습니다. 코드 에디터(VS Code)로 열면? 같은 글자인데 색을 입혀서 보기 좋게 만들어줍니다.
같은 텍스트 파일인데, 어떤 프로그램으로 여느냐에 따라 다르게 보이는 것입니다.

핵심 포인트
- 프로그램 = 파일을 읽고 처리하는 규칙의 모음
- 코드 파일 = 규칙이 있는 텍스트 파일
- 모든 프로그램의 구조: 파일에서 읽기 → 처리 → 결과
폴더와 경로
폴더 = 파일을 담는 상자
파일이 많아지면 정리가 필요합니다. 현실 세계에서 서류가 많으면 서랍장 칸을 나누어서 보관하죠? 컴퓨터에서는 폴더를 만들어서 파일을 정리합니다.
내 컴퓨터/
├── 문서/
│ ├── 업무/
│ │ ├── 보고서.docx
│ │ └── 예산.xlsx
│ └── 개인/
│ ├── 일기.txt
│ └── 여행계획.docx
├── 사진/
│ ├── 2025년/
│ │ └── 여행사진.jpg
│ └── 2026년/
│ └── 새해사진.jpg
└── 음악/
└── 좋은노래.mp3
폴더 안에 폴더를 넣을 수 있습니다. 서랍장 안에 작은 상자를 넣고, 그 상자 안에 또 작은 상자를 넣는 것과 같습니다.
경로 = 파일의 주소
경로(Path)란 파일이 어디에 있는지 알려주는 주소입니다.
현실 세계에서 주소가 이렇게 생겼다면:
대한민국 → 서울시 → 강남구 → 역삼동 → 123번지
컴퓨터에서 파일 경로는 이렇게 생겼습니다:
/Users/철수/문서/업무/보고서.docx
분해해 보면:
/Users/ → 사용자들의 공간
철수/ → 철수의 개인 공간
문서/ → 문서 폴더
업무/ → 업무 폴더
보고서.docx → 최종 파일!
슬래시(/)가 폴더를 구분하는 표시입니다.
참고로 Mac/Linux는 슬래시(/), Windows는 백슬래시(\)를 사용합니다. 방향이 다르지만 개념은 완전히 같습니다:
Mac: /Users/철수/Documents/보고서.docx
Windows: C:\Users\철수\Documents\보고서.docx

왜 경로를 알아야 할까요?
일상적으로 컴퓨터를 쓸 때는 마우스로 폴더를 클릭하면 되니까, 경로를 직접 입력할 일이 거의 없습니다.
하지만 프로그래밍을 할 때는 다릅니다. 프로그램은 마우스가 아니라 텍스트로 파일을 찾기 때문입니다.
"보고서 파일을 열어줘" → ❌ 어떤 보고서?
"/Users/철수/업무/보고서.docx" → ✅ 정확히 알겠습니다!
핵심 포인트
- 폴더: 파일을 정리하는 상자 (폴더 안에 폴더 가능)
- 경로: 파일의 정확한 주소 (
/Users/철수/문서/보고서.docx)- 슬래시(/): 폴더를 구분하는 표시