2025-01-20T02:26:20
This commit is contained in:
80
doc/08_01_file_io.md
Normal file
80
doc/08_01_file_io.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# 파일 입출력
|
||||
|
||||
파이썬에서 파일 입출력은 프로그램 실행 중 데이터를 파일 시스템에 저장하거나 파일에서 데이터를 읽어오는 것을 의미합니다. 이를 통해 프로그램의 데이터를 영구히 저장하고 필요할 때 다시 사용할 수 있습니다.
|
||||
|
||||
## 파일 열기
|
||||
|
||||
파이썬에서는 open() 함수를 사용하여 파일을 엽니다.
|
||||
|
||||
```python
|
||||
f = open("파일 이름", "모드")
|
||||
```
|
||||
* 파일 이름: 열고자 하는 파일의 경로를 지정합니다.
|
||||
* 모드: 파일을 어떤 방식으로 열 것인지 지정합니다.
|
||||
- r: 읽기 모드 (기본값)
|
||||
- w: 쓰기 모드 (파일이 존재하면 내용을 덮어씀)
|
||||
- a: 추가 모드 (파일 끝에 내용을 추가)
|
||||
- x: 파일이 존재하지 않을 때만 생성
|
||||
- b: 바이너리 모드 (이진 데이터 처리)
|
||||
- t: 텍스트 모드 (기본값)
|
||||
|
||||
|
||||
> - r+: 읽기와 쓰기를 동시에 수행합니다.
|
||||
> - a+: 파일 끝에 내용을 추가하고 읽기 작업도 수행합니다.
|
||||
> - rb, wb, ab: 바이너리 모드로 파일을 열 때 사용합니다.
|
||||
|
||||
|
||||
## 파일 읽기
|
||||
```python
|
||||
f = open("data.txt", "r")
|
||||
contents = f.read() # 파일 전체 내용 읽기
|
||||
lines = f.readlines() # 파일을 줄 단위로 읽어 리스트에 저장
|
||||
```
|
||||
|
||||
## 파일 쓰기
|
||||
```python
|
||||
f = open("output.txt", "w")
|
||||
f.write("Hello, world!\n")
|
||||
```
|
||||
|
||||
## 파일 닫기
|
||||
```python
|
||||
f.close()
|
||||
```
|
||||
|
||||
## with 문을 사용한 안전한 파일 처리
|
||||
with 문을 사용하면 파일 객체를 생성하고, 블록이 끝날 때 자동으로 파일을 닫아줍니다. 따라서 파일을 닫는 것을 잊어버릴 염려가 없습니다.
|
||||
```python
|
||||
with open("data.txt", "r") as f:
|
||||
contents = f.read()
|
||||
```
|
||||
> 파일을 열 때는 항상 close() 메서드를 사용하여 파일을 닫아주는 것이 좋습니다.
|
||||
> 파일을 쓰기 모드로 열면 기존 내용이 모두 삭제될 수 있습니다.
|
||||
> 바이너리 파일을 다룰 때는 b 옵션을 사용해야 합니다.
|
||||
|
||||
```python
|
||||
# 파일 읽기
|
||||
with open("input.txt", "r") as f:
|
||||
for line in f:
|
||||
print(line, end="")
|
||||
|
||||
# 파일 쓰기
|
||||
with open("output.txt", "w") as f:
|
||||
f.write("Hello, world!\n")
|
||||
f.write("This is a new line.")
|
||||
```
|
||||
|
||||
|
||||
# 파일 메서드
|
||||
* file.read()
|
||||
* file.readline()
|
||||
* file.readlines()
|
||||
* file.next()
|
||||
* file.seek()
|
||||
* file.tell()
|
||||
* file.truncate()
|
||||
* file.write()
|
||||
* file.writelines()
|
||||
* file.flush()
|
||||
* file.close()
|
||||
|
||||
Reference in New Issue
Block a user