티스토리 뷰

Python

[Python] Python OS Module

무엇보다_빛나는_샤트 2022. 2. 11. 01:34

*2021.2.24 03:53

 

안녕하세요

프로그래밍을 배우는 빛나는 샤트입니다.

 

파이썬을 하다보면 로컬 경로에 있는 파일들을 불러올 일이 많습니다.

이미지, csv파일 등...

 

경로 설정 시 참고하면 좋은 파이썬 내장 모듈인 OS를 가지고 왔습니다!

 

*Jupyter Notebook에서 실행한 결과 이미지 캡쳐와 코드블럭을 함께 기재하겠습니다.

 

1. 현재 경로 출력

OS.getcwd()
!pwd

 

현재 경로 출력 = os.getcwd()

 

import os

print(os.getcwd())
print(type(os.getcwd()))

 

현재 디렉토리의 경로가 출력된다.

그리고 놀랍게도 데이터 유형이 ' string'이다!

즉, 하나의 오브젝트로 사용할 수 있다.

 

이런 특성을 이용해서 문자열을 추가로 더할 수 있다.

path와 path_new 변수에 각각 현재 경로 현재경로 + '/pics'을 할당했다.

새로운 경로 쉽게 만들기

 

path = os.getcwd()
path_new = os.getcwd() + '/pics'

print(path)
print(path_new)

 

현재 디렉토리를 확인할 수 있는 또 다른 명령어는 `!pwd`이다.

현재 경로 출력 = !pwd

 

 

그럼 이것도 오브젝트로 사용할 수 있는지 os.getcwd()와 비교해보면,

문법 오류가 난다! '!pwd'는 객체로서 사용할 수 없고 단지 디렉토리 정보만 알 수 있다.

!pwd # 객체는 아니다.
os.getcwd() == !pwd # 동등 비교 할 수 없다.

2. 경로에 있는 파일 또는 폴더 출력하기

os.listdir(경로)

os.listdir(path) # 경로에 있는 폴더와 파일 모두 출력
os.listdir('/home/aiffel-dj40/1.AIFFEL_Study/Exploration/E10_Image_Semantic_Segmentation')
os.listdir(path) == os.listdir('/home/aiffel-dj40/1.AIFFEL_Study/Exploration/E10_Image_Semantic_Segmentation')

os.listdir(경로) 는 경로에 있는 모든 파일과 폴더를 출력해 준다.

역시 경로 안에는 변수로 저장된 경로(타입: 문자열)가 들어가도 동일하게 작동한다.

 

혹시 경로 내에 특정 파일 확장자를 출력하고 싶다면 아래와 같이 시도해보자!

경로 내의 특정 파일 확장자 출력

 

for i in os.listdir(path_new):
    if i.endswith('jpg'): # 파일 이름 끝이 'jpg'라면
        print(i)

*endswith('확장자'): '확장자'로 끝나는 파일 찾기. 예시) 'jpg'라면 파일 이름 끝이 'jpg' 인 파일이면 True 반환

 

3. 환경 변수 출력

os.getenv('HOME')
os.environ['HOME']

환경변수 출력

 

print(os.environ['HOME'])
print(os.getenv('HOME'))
print(os.environ['HOME'] == os.getenv('HOME'))
print(type(os.environ['HOME']))
print(type(os.getenv('HOME')))

운영 체제에 등록되어 있는 모든 환경 변수는 os 모듈의 environ이라는 속성을 통해서 접근이 가능

둘 다 동일한 출력이며 데이터 타입이 'string'이므로 경로 설정시 사용할 수 있다!

 

 

혹시 코딩을 하다가 '여긴 어디?  뭐가 있지?' 라는 생각이 들 때 익혀두면 바로 확인할 수 있다!

 

당신의 빛나는 코딩을 응원합니다.

 

피드백은 언제나 환영입니다!

LIST

'Python' 카테고리의 다른 글

[Python]if __name__ == "__main__" 활용법(from, import 활용)  (0) 2022.02.16
[알고리즘]빗물트래핑  (0) 2022.02.15
[알고리즘]두 수의 합  (0) 2022.02.15
댓글