Dev

[Python] 10. 파이썬 파일 시스템 (feat. 읽기, 쓰기, 경로)

mlslly 2024. 5. 10. 11:27

파이썬에서 파일을 활용하므로써 프로그래밍을 유용하게 업그레이드 시킬 수 있다.

오늘은 파이썬에서 활용할 수 있는 파일 시스템의 기본을 배워보도록 한다.

파이썬에서 파일을 읽고 쓰기 

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' 식으로 ..\를 앞에 붙여준다.

 

출처 :  https://www.devopsschool.com/blog/linux-tutorials-understanding-absolute-and-relative-path/