반응형
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) 사용 방법 (0) | 2023.03.21 |
---|---|
파이썬 조건문, 반복문, 예외처리 (0) | 2023.03.20 |
파이썬 데이터 묶기 zip() (0) | 2022.11.18 |
파이썬 리스트 자료형 정복 (0) | 2022.11.16 |
파이썬 답게 코딩해보자 if condition (0) | 2022.11.13 |