리눅스 혹은 macOS 시스템에서 파이썬으로 코딩할 때 자주 사용하는 os 라는 모듈이 있습니다. os 모듈은 운영체제에서 사용되는 여러 기능들을 파이썬 모듈로 제공하여 이를 쉽게 사용할 수 있도록 해줍니다. 특히 디렉토리나 파일을 접근할 때 유용하게 쓸 수 있습니다.
유용한 파이썬 os 모듈 함수 5가지
os 모듈은 다양한 함수를 제공합니다. 그 중 유용하게 사용할 수 있는 5가지 함수를 소개해 보도록 하겠습니다.
- os.getcwd()
- os.path.exists()
- os.mkdir()
- os.listdir()
- os.walk()
먼저 os 모듈을 사용하기 위해서는 os 를 import 해주어야 합니다.
import os
os.getcwd()
현재의 경로를 알기 위해 os.getcwd() 를 사용할 수 있습니다. 이는 리눅스에서 pwd 명령어를 입력하는 결과값과 동일한 값을 string 타입으로 리턴해줍니다.
import os
# 현재 경로를 string 타입으로 리턴
res = os.getcwd()
print(res)
os.path.exists()
현재 경로에 특정 파일이나 디렉토리가 존재하는지 여부를 확인할 때 사용합니다. 이는 리눅스에서 find -name 과 비슷하게 사용됩니다.
import os
# 현재 경로에서 "test" 라는 이름의 파일 혹은 디렉토리가 존재할 시 true 리턴
if os.path.exists("test"):
print("test 존재")
os.mkdir()
디렉토리를 생성할 때 사용하는 함수 입니다. 리눅스에서 mkdir 명령어와 동일한 동작을 수행합니다.
import os
# test 라는 이름의 디렉토리 생성
os.mkdir("test")
os.listdir()
지정된 경로의 디렉토리에 존재하는 파일 혹은 디렉토리를 리스트로 반환합니다.
import os
# test 디렉토리 내의 디렉토리 혹은 파일명을 리스트 타입으로 리턴
dir_list = os.listdir("test")
print(dir_list)
아래를 보면 test 디렉토리에 sec_dir_1, sec_dir_2라는 이름의 하위 디렉토리가 존재합니다.
이 상태에서 코드를 실행하면 아래와 같이 리스트 타입의 결과값이 나옵니다.
['sec_dir_2', 'sec_dir_1']
os.walk()
지정된 경로의 디렉토리를 순차적으로 탐색하여 반복문으로 활용하고 싶을 때 os.walk() 함수를 사용합니다. os.walk()는 주로 반복문과 함께 사용합니다.
import os
# test 디렉토리를 순차적으로 탐색하며 현재 디렉토리, 현재 디렉토리 내의 디렉토리들과 파일들을 순회한다.
for curDir, dirs, files in os.walk("test"):
print(curDir, dirs, files)
for f in files:
print(os.path.join(curDir, f))
test 디렉토리는 아래와 같이 설정되어 있습니다.
test, test/sec_dir_2, test/sec_dir_1 3개의 디렉토리를 순차적으로 순회하며 file 이 존재 할 경우 현재의 디렉토리와 join 하여 경로를 출력한 결과값입니다.
test ['sec_dir_2', 'sec_dir_1'] []
test/sec_dir_2 [] ['sec_dir_2_a.txt', 'sec_dir_2_b.txt']
test/sec_dir_2/sec_dir_2_a.txt
test/sec_dir_2/sec_dir_2_b.txt
test/sec_dir_1 [] ['sec_dir_1_a.txt']
test/sec_dir_1/sec_dir_1_a.txt
마무리
파이썬 코딩을 하다보면 특정 디렉토리와 파일을 접근할 경우가 많습니다. 이 경우 os 모듈을 사용하면 보다 간단하고 다양한 경우의 수를 고려하여 코딩할 수 있습니다. 특히 위에 소개된 5가지 함수는 자주 사용되니, 기억해두시면 유용한 정보가 되리라 생각합니다.
오늘도 행복한 코딩생활 되시기 바랍니다. 감사합니다.
'개발 > python' 카테고리의 다른 글
python 기존 파일에 내용 추가 방법, 열기 모드를 'a' 로 하기 (4) | 2022.04.14 |
---|---|
python 문자열 포매팅, string 을 세밀하게 다루는 방법 (4) | 2022.04.12 |
python 타입 비교 및 확인, type 함수 대신 isinstance 함수 사용법 (0) | 2022.04.01 |
python 진행 사항 확인, progressbar 간단 사용 방법 (0) | 2022.03.29 |
[python] python 백그라운드 실행, nohup (0) | 2021.09.13 |
댓글