Python

Python os library에서 자주 쓰는 함수 정리

qlsenddl 2020. 12. 4. 14:54
728x90

import os 명령으로 os library를 import해서 사용한다.


* 예시에서 directory는 모두 폴더에 있는 주소를 의미하고, string 자료형이다. 예를 들어 바탕화면에 대한 directory는 다음과 같이 입력해주면 된다.

directory = 'C:/Users/user/Desktop/'

 위와 같이 directory 주소를 입력하는 것을 절대경로라고 한다. 절대경로 대신 상대경로로도 입력할 수 있다. jupyter notebook의 경우 상대경로는 .ipynb 파일이 있는 경로를 그 하위 directory(폴더)로 접근할 수 있다. 예를 들어 현재 .ipynb 파일이 있는 폴더 내에 test라는 폴더에 접근하려고 하면 다음과 같이 입력해준다.

directory = './test/'


1. os.path.exists(directory): 해당 directory에 원하는 이름의 폴더가 있는지 확인

ex>

directory = 'C:/Users/user/Desktop/'

a = os.path.exists(directory+'test')

print(a)

-> directory가 가리키는 폴더에 test라는 파일이 있으면 True를 출력하고, 파일이 없으면 False를 출력한다.


2. os.mkdir(directory): 해당 directory에 directory가 가리키는 폴더 생성

ex>

directory = 'C:/Users/user/Desktop/'

os.mkdir(directory+'test')

-> test 파일이 없으면 test라는 이름의 폴더가 directory가 가리키는 폴더에 생성된다. 이미 폴더가 있는 경우 'FileExistsError: [WinError 183] 파일이 이미 있으므로 만들 수 없습니다'라는 에러 메시지가 생성된다.


-> 때문에 보통 os.mkdir를 이용해서 에러 없이 폴더를 생성하기 위해서는 1번에 나온 os.path.exists을 같이 사용하여 다음과 같이 코딩한다.

ex>

directory = 'C:/Users/user/Desktop/'

if not os.path.exists(directory+'test'):

    os.mkdir(directory+'test')


3. os.path.join(directory1, directory2)두 경로를 결합하여 새 경로 생성

directory가 string함수이기 때문에 단순히 string 객체를 합치는 + 연산으로 해도 될 것 같은데 은근 많이 쓰이는 방법 중 하나이다. string 객체의 단순 합보다 좋은 점은 /가 경로 사이에 생략이 되어도 경로로 사용될 수 있게 처리를 해준다.

ex1>

directory1 = 'C:/Users/user/Desktop/'

directory2 = 'test/example/'

a = os.path.join(directory1, directory2)

print(a)

>> C:/Users/user/Desktop/test/example/


ex2>

directory1 = 'C:/Users/user/Desktop'

directory2 = 'test/example/'

a = os.path.join(directory1, directory2)

print(a)

>> C:/Users/user/Desktop\test/example/

-> 경로 사이에 '/'가 생략되어도 \가 자동으로 추가돼 경로로 사용할 수 있다.

728x90