파이썬 파일 및 폴더 다루기 : OS모듈

2022. 11. 18. 23:54·파이썬/Basic
반응형
os는 Operating system의 약자로 폴더 생성, 파일 삭제, 이름 변경 등 운영체제의 종속 기능을 수행할 수 있는 모듈이다
import os

os를 임포트해주면 사용할 수 있다

 

현재 작업 경로 확인 getcwd()
import os

print(os.getcwd())
>> C:\Users\Administrator

cwd는 Current Work Directory 로 현재 작업 경로를 알려준다. 

 

작업 경로 변경 chdir()
import os
os.chdir(r'C:\Program Files\Windows Defender')
print(os.getcwd())

>> C:\Program Files\Windows Defender
파일 목록 listdir()
import os
os.chdir(r'C:\Program Files\Windows Defender')
print(os.listdir())

>> ['AmMonitoringInstall.mof', 'AMMonitoringProvider.dll', 'AmStatusInstall.mof', 'ClientWMIInstall.mof', 'ConfigSecurityPolicy.exe', 'DefenderCSP.dll', 'EppManifest.dll', 'FepUnregister.mof', 'ko-KR', 'MpAsDesc.dll', 'MpAzSubmit.dll', 'MpClient.dll', 'MpCmdRun.exe', 'MpCommu.dll', 'MpEvMsg.dll', 'MpOAV.dll', 'MpProvider.dll', 'MpRtp.dll', 'MpSvc.dll', 'MsMpCom.dll', 'MsMpEng.exe', 'MsMpLics.dll', 'MsMpRes.dll', 'NisSrv.exe', 'Offline', 'ProtectionManagement.dll', 'ProtectionManagement.mof', 'ProtectionManagement_Uninstall.mof', 'shellext.dll', 'ThirdPartyNotices.txt']

import os
print(os.listdir(r'C:\Program Files\Windows Defender'))

>> ['AmMonitoringInstall.mof', 'AMMonitoringProvider.dll', 'AmStatusInstall.mof', 'ClientWMIInstall.mof', 'ConfigSecurityPolicy.exe', 'DefenderCSP.dll', 'EppManifest.dll', 'FepUnregister.mof', 'ko-KR', 'MpAsDesc.dll', 'MpAzSubmit.dll', 'MpClient.dll', 'MpCmdRun.exe', 'MpCommu.dll', 'MpEvMsg.dll', 'MpOAV.dll', 'MpProvider.dll', 'MpRtp.dll', 'MpSvc.dll', 'MsMpCom.dll', 'MsMpEng.exe', 'MsMpLics.dll', 'MsMpRes.dll', 'NisSrv.exe', 'Offline', 'ProtectionManagement.dll', 'ProtectionManagement.mof', 'ProtectionManagement_Uninstall.mof', 'shellext.dll', 'ThirdPartyNotices.txt']

path를 지정해주지 않으면 현재 작업 경로의 파일 리스트를 리턴합니다

listdir() 응용

이전 포스팅에 있던 listcomprehension을 이용해 원하는 파일 리스트만 뽑아봅시다 

import os

file = os.listdir(r'C:\Program Files\Windows Defender')
file_dll = [dll for dll in file if dll.endswith('.dll') ]
print(file_dll)

>> ['AMMonitoringProvider.dll', 'DefenderCSP.dll', 'EppManifest.dll', 'MpAsDesc.dll', 'MpAzSubmit.dll', 'MpClient.dll', 'MpCommu.dll', 'MpEvMsg.dll', 'MpOAV.dll', 'MpProvider.dll', 'MpRtp.dll', 'MpSvc.dll', 'MsMpCom.dll', 'MsMpLics.dll', 'MsMpRes.dll', 'ProtectionManagement.dll', 'shellext.dll']
커맨드 명령 system()
import os
os.system('ipconfig')

>> 이더넷 어댑터 이더넷 :

   연결별 DNS 접미사. . . . :
   링크-로컬 IPv6 주소 . . . . : 
   IPv4 주소 . . . . . . . . . : 
   서브넷 마스크 . . . . . . . : 
   기본 게이트웨이 . . . . . . :

윈도우 - 명령프롬프트(cmd.exe)나 powershell or 리눅스 - 터미널에서 사용하는 명령어를 사용할 수 있습니다

폴더 생성 mkdirs()  |  makedirs() 

os.mkdir(path, mode=0o777, *, dir_fd=None)

  • path에 입력한 경로에 폴더를 생성합니다 
  • C:\Program Files 폴더에 test 폴더를 만들고 싶다면 os.mkdir(C:\Program Files\test) 와 같이 path를 지정해주어야 합니다
  • 폴더가 이미 존재한다면 에러 발생

makedirs(name, mode=0o777, exist_ok=False)

  • name에 입력한 경로에 폴더를 생성합니다 
  • 재귀 디렉토리 생성 함수로 하위 디렉토리까지 생성 할 수 있습니다
  • exist_ok : 기본값 False. 해당 경로에 폴더가 존재해도 되는지 여부. 참이면 폴더가 있으면 무시 거짓일 땐 에러 발생
폴더 삭제 rmdir()  |  removedirs()

os.rmdir(path, *, dir_fd=None) 

  • path 경로의 폴더를 삭제합니다
  • 폴더가 존재하지 않거나 비어있지 않으면 에러 발생

os.removedirs(name)

  • path 경로의 폴더를 삭제합니다
  • 마지막 폴더의 삭제가 성공하면 상위로 폴더로 올라오면서 비어있으면 삭제합니다
파일삭제 remove()

os.remove(path, *, dir_fd=None)

  • path 경로의 파일을 삭제합니다 경로가 폴더거나 파일이 존재하지 않으면 에러 발생
  • C:\Program Files\test\test.txt  이런식으로 path를 지정하면 됩니다
이름 변경 & 이동 rename()  |  renames()  |  replace()

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

  • src 경로의 파일을 dst 경로로 변경&이동 
  • dst가 존재한다면 에러 발생
  • 파일을 이동시키는 경우 해당 폴더가 존재해야 합니다

os.renames(old, new)

  • old 경로의 파일을 new 경로로 변경&이동 시킵니다. 폴더가 존재하지 않는 경우 폴더를 생성해 이동시킴

os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

  • rename()과 같습니다. 다만 rename()은 플랫폼 마다 다른 에러가 발생하지만 replace()는 같은 에러를 발생시킵니다

os.path 모듈
os.path.join(path, *paths) path와 *paths를 합쳐 디렉토리 경로로 리턴
os.path.split(path) path의 경로를 튜플(head,tail) 형태로 리턴. tail은 최하위(폴더or파일), head는 상위 디렉토리
os.path.splitext(path) path 경로의 파일의 확장자명을 분리해 튜플로 리턴 ex) 'C:\\Program Files\\test' , '.txt' 
os.path.exists(path) path가 존재하면 True 리턴
os.path.isfile(path) path의 파일이 존재 할 때 True 아닐 때 False 리턴
os.path.isdir(path) path의 폴더가 존재 할 때 True 아닐 때 False 리턴
os.path.getsize(path) 폴더나 파일의 바이트(bytes)크기 리턴. 파일의 경우 정확한데 폴더는 제대로 안나오네요
os.path.dirname(path) 디렉토리의 경로만 리턴
os.path.basename(path) 파일 이름만 리턴

 

저작자표시 비영리 변경금지 (새창열림)

'파이썬 > Basic' 카테고리의 다른 글

파이썬 함수(Method) 사용 방법  (1) 2023.03.21
파이썬 조건문, 반복문, 예외처리  (0) 2023.03.20
파이썬 데이터 묶기 zip()  (1) 2022.11.18
파이썬 리스트 자료형 정복  (0) 2022.11.16
파이썬 답게 코딩해보자 if condition  (0) 2022.11.13
'파이썬/Basic' 카테고리의 다른 글
  • 파이썬 함수(Method) 사용 방법
  • 파이썬 조건문, 반복문, 예외처리
  • 파이썬 데이터 묶기 zip()
  • 파이썬 리스트 자료형 정복
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (644) N
      • 상품 추천 (150) N
      • MongoDB (4)
      • 하드웨어 (11) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (12)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (50)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    unity
    셀레니움
    파이썬
    스크립트 실행 순서
    리스트
    programmerlife
    카페24리뷰이관
    codingcommunity
    쇼핑몰리뷰
    카페24리뷰
    리뷰이관
    믈레코비타멸균우유
    appdevelopment
    programming101
    유니티
    ipcamera
    cv2
    리뷰관리
    devlife
    긴유통기한우유
    learntocode
    codingtips
    라떼우유
    C#
    Python
    스마트스토어리뷰
    상품 리뷰 크롤링
    스크립트 실행
    rtsp
    list
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
파이썬 파일 및 폴더 다루기 : OS모듈
상단으로

티스토리툴바