파이썬에서 파일을 활용하므로써 프로그래밍을 유용하게 업그레이드 시킬 수 있다.
오늘은 파이썬에서 활용할 수 있는 파일 시스템의 기본을 배워보도록 한다.
파이썬에서 파일을 읽고 쓰기
1. 파이썬에서 텍스트 파일 열고 읽기 : open
파이썬에서 텍스트 파일을 열고 읽을 수 있다.
아래처럼 open함수에 파일 경로를 적어주고, file.read() 함수를 이용하면 간단하게 내용을 확인 가능하다.
리소스 차지를 줄이기 위해서 파일을 열고 확인하고 나면 close 함수로 파일을 닫아주어야 한다.
<main.py>
file = open('/filepath/my_file.txt')
content = file.read()
print(content)
file.close()
2. 파일을 열고 자동으로 닫기 : with open
with open을 쓰면, file을 닫지 않아도 자동으로 파일이 필요 작업을 수행하고는 닫힌다.
with 키워드는 파일을 직접 관리한다.
with open('/filepath/my_file.txt') as file :
content = file.read()
print(content)
3. 파일에 내용 덮어쓰기 : write (mode = 'w')
파일에는 mode 기능을 지정해서 사용할 수 있는데, 값을 지정하지 않을시 자동으로 파일은 읽기 모드 상태이다.
파일에 내용을 적으려면 쓰기 모드라는 의미로 mode = 'w'를 아래와 같이 지정 필요하다
with open('/filepath/my_file.txt', mode = 'w') as file :
file.write('New Text')
my_file.txt에 들어가보면 이전에 작업했던 내용들은 모두 지워지고 새로운 텍스트로 대체된 것을 볼 수 있다.
4. 파일에 내용 추가하기 : write (mode = 'a')
이제 기존의 파일 내용을 삭제하지 않은채로 내용을 추가해보자.
이번에는 mode를 쓰기가 아닌 더하기 (add)로 설정해주면 된다. mode='a'를 지정하고 내용을 반영했을 때
아래와 같이 내용이 추가됨을 볼 수 있다.
with open('/filepath/my_file.txt', mode = 'a') as file :
file.write('\nNew Text')
5. 새로운 파일 만들고 내용 추가하기 : write (mode = 'w')
앞서서는 기존 파일을 가지고만 작업했는데, 만약에 없는 파일의 파일명을 지정해서 write 해주면,
파일이 새로 생성되고 그 안에 내용이 작성되는 것을 볼 수 있다.
이 경우 당연히 mode는 추가가 아닌 'w', 쓰기 모드로 설정해주어야 한다.
with open('/filepath/new_file.txt', mode = 'w') as file :
file.write('This is the New Text')
없던 new file이 생성된 것을 볼 수 있다.
파이썬 파일의 경로 - 상대 경로, 절대 경로
특정 파일 경로가 무엇인지 확인하는 개념으로 상대경로와 절대경로가 있다.
- 절대 경로 (absolute path)
: 절대 경로는 항상 path 주소가 Root 디렉토리부터 시작한다. 아래 그림에서 C:\는 윈도우 운영체제 상에서 Root 폴더를 의미한다. 오른쪽 절대 경로에서 모든 주소들이 Root를 기준으로 현재 위치를 타나내고 있다.
- 상대 경로 (relative path)
: 반면 상대 경로는 path 주소가 '현재 작동되고 있는 디렉토리' 인 Working directory (현재 열려있는 폴더) 를 기준으로 설정된다. 현재 디렉토리가 열려있는 상태에서 상대 경로는 .\ (맥의 경우 ./) 가 앞에 붙는 식으로 Working 디렉토리를 알려주는데,
1) 폴더나 파일이 Working 디렉토리 안에 있다면 '.\fizz\spam.txt' 식으로 .\ 를 앞에 붙여주고, (생략 가능)
2) 폴더나 파일이 Working 디렉토리의 바깥에 있다면 '..\eggs\spam.txt' 식으로 ..\를 앞에 붙여준다.
'Dev' 카테고리의 다른 글
[알고리즘] 피보나치 수열 (0) | 2024.05.14 |
---|---|
[Python] 11. 뱀게임 스코어 파일에 기록 (feat. 파일 시스템 ) (0) | 2024.05.10 |
[Python] 9. 터틀 크로싱 게임 (0) | 2024.05.06 |
[Python] 8. 핑퐁게임 만들기 (0) | 2024.05.04 |
[Python] 7. 클래스 상속 (1) | 2024.05.04 |