os.path.join 파일 경로 설정하기

2022. 10. 19. 00:22Python/Python

os는 파일들을 작업하는데 있어서 많은 도움들을준다. 특히 그중에서 path.join에 대하여 알아보고자 한다.

우선 들어가기 전에 os를 import 해야한다는 것을 잊지말자.

 

1. 일반적인 경로설정

일반적으로 자신이 원하는 파일의 경로가 있다면

file_path= '/content/drive/MyDrive/Project/korean/'
file_name='output_data.py'
full_path=file_path + file_name

혹은

file_path =  '/content/drive/MyDrive/Project/korean/output_data.py'

위의 경우와 같이 file path와 file name을 구분지어서 설정 후 합하거나 처음부터 모든 경로를 다 입력하여 사용할 것이다.

사실 이렇게만 하더라도 큰 문제는 발생하지 않는다. 

 

2. os.path.join 를 이용한 경로 설정

file_path_01= '/content/drive/MyDrive/Project/korean'
file_name_01='output_data.py'
os.path.join(file_path_01, file_name_01)

이는 두개 이상의 경로에 대하여서 조합해주는 것인데 위의 full_path와 무엇이 다른지 바로 눈에 들어오지는 않는다.

처음의 full_path에 file_paht_01과 file_name_01을 적용시켜보면 이상한 것이 보인다.

>>> full_path=file_path_01 + file_name_01
>>> print(full_path)
'/content/drive/MyDrive/Project/koreanoutput_data.py'

단순히 +를 한다면 슬래쉬(/)가 없다. 그러나 os.path.join을 쓴다면?

>>> print(os.path.join(file_path_01, file_name_01))
'/content/drive/MyDrive/Project/korean/output_data.py'

없던 슬래쉬(/)도 붙여주는 친절함이 보인다. 이미슬래쉬(/)가 있더라도 상관없이 잘 붙여주기 때문에 유용하다

 

3. 응용

os.path.join은 2개 이상의 경로를 조합해준다.

>>>path_01 = '/content/drive/MyDrive'
>>>path_02 = 'Project/korean'
>>>file_name = 'output_data.py'
>>>print(os.path.join(path_01, path_02, file_name))
'/content/drive/MyDrive/Project/korean/output_data.py'

이처럼 3개의 경로를 입력해주더라도 문제없이 이어준다

또한 2번에서 언급한것 처럼 단순히 + 해준다면 '/content/drive/MyDriveProject/koreanoutput_data.py'이 되었을 것이

깔끔하게 합하여진 것을 확인할 수 있다.

 

4.만났던 오류

코랩을 사용하는데 파일이름이 'korean/output_data.csv' 이었을 때 os.path.join을 사용하니  

>>>path_01 = '/content/drive/MyDrive'
>>>path_02 = 'Project'
>>>file_name = 'korean/output_data.csv'
>>>pd.read_csv(os.path.join(path_01, path_02, file_name))

error message = 'FileNotFoundError: [Errno 2] No such file or directory:'

파일을 찾을 수 없다는 메세지를 받게 되었다.

이리 저리 찾아보다 아래와 같이 생각보다 간단하게 해결되었다.

>>>path_01 = '/content/drive/MyDrive'
>>>path_02 = 'Project'
>>>file_name = 'korean/output_data.csv'
>>>pd.read_csv(os.path.join(path_01, path_02, 'korean\output_data.csv'))

'Python > Python' 카테고리의 다른 글

Python range vs arange 차이  (0) 2022.10.06
Python 문자 정렬 ljust(), rjust(), center()  (0) 2022.09.28