Python/Python기초

Python 28_ 파일 디렉토리 다루기, [os 모듈] 의 변수와 함수들

Codezoy 2019. 12. 27. 17:16


# 파일 디렉토리 다루기, [os 모듈] 의 변수와 함수들

     import os
     print(os.getcwd())
     # CWD : Current Wroking Directory (현재 작업 디렉토리/폴더)

출력 결과
C:\dev\lab-python\lec07_file

# 절대 경로 (absolute path)
# 시스템의 루트(root)부터 전체 디렉토리 경로를 표시하는 방법
# ex) C:\dev\lab-python\lec07_file (Windows - 백슬레시\ 사용) : 현재 디렉토리
#.Users/user/Document (MacOS 또는 Linux 운영체제 : 슬레시/ 사용)

# 상대 경로 (relative path):
# 현재 작업 디렉토리(cwd)를 기준으로 경로를 표시하는 방법
# .: 현재 디렉토리, ..(상위 디렉토리)
# 상대 경로 ..\lec06_class\inheritance01.py
# 절대 경로 : C:\dev\lab-python\lec06_class\inheritance01.py


# .\file01.py  ==  file01.py



     print(os.name) # OS 종류 확인
     if os.name == 'nt': # Windows OS인 경우
          file_path = '.\\temp\\temp.txt'
     else: # Windows 이외의 OS인 경우
          file_path = './temp/temp.txt'

     print(file_path)


출력 결과
nt   # print(os.name)
.\temp\temp.txt

     # 파일 구분자(file seperator)를 해당 OS에 맞게끔 경로를 만들어 줌

     file_path = os.path.join('temp', 'temp.txt')
     print(file_path)


출력 결과
temp\temp.txt

     print(os.path.isdir('.')) # directory 인가요?
     print(os.path.isdir('file01.py')) # .\\file01.py
     print(os.path.isfile('.')) # file 인가요 ?
     print(os.path.isfile('file01.py'))


출력 결과
True
False
False
True


# with 구문: 리소스를 사용한 후  close() 메소드를 자동으로 호출
# with  ...  as 변수:  실행문

# 현재 directory에 포함된 파일들의 이름을 출력
    
     with os.scandir('.') as my_dir:
          for entry in my_dir:
               print(entry.name, entry.is_file())


file01.py True
temp False
__init__.py True

   

     # 파일(디렉토리) 이름 변경:     

     # os.rename(원본 이름, 바꿀 이름)
     # 원본 파일(디렉토리)가 없는 경우에 에러 발생
     os.rename('temp', 'test')

 temp 폴더의 이름이 test로 변경됨

동일 구문 재실행 결과


     # file 삭제: os.remove(삭제할 파일 이름)
     # directory 삭제: os.rmdir(삭제할 폴더 이름)

     os.rmdir('test')



# 디렉토리 만들기
# os.mkdir(디렉토리 이름)
# os.makedirs(디렉토리 이름)
    os.mkdir('test2')


 test2 folder가 만들어진 모습

makedirs 와 mkdir 의 차이점
     os.mkdir('test\\temp')  -> 오류
     # test1 폴더가 없기 때문에 그 하위 폴더를 생성할 수 없음
     os.makedirs('test1\\temp')
     # 부족한 경로를 생성하며 정상적으로 실행됨

실행 결과