개발/Python

[Python] 파이썬 os 모듈에 대해서 알아보자

growing-dev 2023. 2. 26. 23:18

파이썬에서 os와 관련된 기능을 수행할 수 있는 os 모듈의 사용법에 대해서 알아보도록 하겠다.

 

 

파이썬 os 모듈에 대해서 알아보자

 os 명령어와 관련된 것들을 실행할 수 있는 모듈이다. 주로 디렉터리와 PATH, 환경변수와 관련된 내용들을 다룰 수 있다. 프로젝트를 만들고 실행하고 하는 동작을 수행할 때 임시 디렉터리를 만들거나 완료된 디렉터리를 지우거나 실행하는 디렉터리를 항상 동일하게 이동해서 실행한다거나 하는 등의 동작을 할 때 활용할 수 있는 모듈이다.

 

 

os.getcwd()

current working directory의 약자로, 현재 실행되고 있는 directory의 주소를 str으로 return한다. 현재 실행하고 있는 절대 경로를 저장하고 이를 통해 각 유저나 어느 디렉터리에서 실행하더라도 동일한 환경을 보장하도록 할 때 유용할 것이다.

import os

if __name__ == '__main__':
    cwd = os.getcwd()
    print(type(cwd))
    print(cwd)

getcwd 실행 결과

 

os.listdir()

현재 디렉토리에 있는 파일들과 하위 디렉터리를 list의 형태로 반환한다. 현재 경로에 원하는 파일이 포함되어 있는지 확인하거나 로그 등을 출력할 때 활용할 수 있을 것이다.

import os

if __name__ == '__main__':
    ld = os.listdir()
    print(type(ld))
    print(ld)

 

listdir 실행 결과

 

os.mkdir()

디렉토리를디렉터리를 생성할 때 사용되는 명령어이다. 프로그램이 실행되면서 필요한 디렉터리를 만들 때 활용하면 된다.

아래는 make_dir이라는 디렉토리를 만든 결과이다. listdir을 활용해서 바로 위에서 확인한 list에서 make_dir이라는 디렉터리가 생성된 것을 확인할 수 있다.

import os

if __name__ == '__main__':
    os.mkdir("make_dir")
    print(os.listdir())

mkdir에서 make_dir을 생성한 결과

 

os.chdir()

위에서 생성한 make_dir 디렉토리로 이동하기 위해 os.chdir("make_dir")을 실행한 결과를 나타내보았다. chdir을 실행 후 os.getcwd()를 통해 현재 디렉터리가 make_dir로 이동된 것을 확인할 수 있다.

import os

if __name__ == '__main__':
    os.chdir("make_dir")
    print(os.getcwd())

chdir 실행 결과

os.rmdir()

os.rmdir()을 통해 원하는 디렉토리를 지울 수도 있다. 아래는 test라는 디렉터리를 만들고 출력한 다음 다시 지우고 출력하는 코드이다. test라는 디렉터리가 생겨났다가 없어진 것을 확인할 수 있다.

import os

if __name__ == '__main__':
    os.mkdir("test")
    print(os.listdir())
    os.rmdir("test")
    print(os.listdir())

rmdir 실행 결과

 

os.path

아래 보는 바와 같이 os.path의 type을 읽어보면 class module이라고 뜬다. 즉 os.path는 현재 경로와 관련된 주요한 기능들을 모아놓은 os 하위의 또 다른 모듈이라고 이해하면 될 것이다.

import os

if __name__ == '__main__':
    path = os.path
    print(type(path))
    print(path)

os.path의 타입과 위치

 

os.path를 활용하면 다양한 것을 할 수 있는데, 주요한 기능들은 아래와 같다.

  • os.path.exists : 파일 존재 여부 확인
  • os.path.isdir : 디렉토리인지 확인
  • os.path.abspath : 절대 경로 확
  • os.path.isfile : 파일인지 확인
  • os.path.getsize : 사이즈 확인
import os

if __name__ == '__main__':
    path = os.path

    print(path.exists("main.py"))
    print(path.isdir("main.py"))
    print(path.abspath("main.py"))
    print(path.isfile("main.py"))
    print(path.getsize("main.py"))

코드 실행 결과

main.py를 기준으로 모두 출력해보았다. main.py는 존재하므로 True, 디렉터리는 아니어서 False, 절대 경로는 위와 같고 file이므로 True, 마지막 파일 사이즈는 229바이트이다.

ls -al로 확인한 main.py의 사이즈도 229이다.

 

 

os.environ()

시스템 환경변수를 활용할 수 있는 기능이다.

import os

if __name__ == '__main__':
    env = os.environ
    print(type(env))
    print(env)

 

아래와 같이 PATH를 뽑아보고 싶을 때 os.environ['PATH'] 와 같은 형태로 뽑아볼 수 있고 os.getenv('PATH')로 뽑아 볼 수도 있다.

import os

if __name__ == '__main__':
    env = os.environ
    print(env['PATH'])
    print(os.getenv('PATH'))

PATH 출력 결과 2가지

 

결론

sys와 마찬가지로 os 모듈 또한 프로그램을 작성할 때 환경과 관련하여 꽤나 필요한 필수적인 모듈이라고 할 수 있다. os와 sys가 조금 헷갈리긴 하지만 잘 활용해서 실행되는 상황이나 환경에 의존적이지 않은 코드를 만드는 게 중요하다고 할 수 있겠다.

반응형