오식랜드
[python] 모듈 연습 - glob, os, datetime 본문
glob, os, datetime
glob
glob 은 어떤 경로 내의 폴더 또는 파일의 목록을 조회할 때 사용합니다
glob 모듈에는 glob() 이라는 함수가 있는데 파일 이름 또는 형태를 넘기면 그에 해당하는 파일이 조회됩니다.
- glob 모듈 import
- glob() 함수에는 확장자가 py 인 모든 파일을 입력
- 파일 실행
import glob
print(glob.glob("*.py")) # 확장자가 py 인 모든 파일
실행을 해보면 현재 작업 공간에 존재하는 .py 로 끝나는 모든 파일이 출력되는 것을 확인할 수 있습니다.
os
os 는 운영체제에서 제공하는 기본 기능으로 생각하면 된다
예를 들어서 폴더를 만들거나 삭제하는 기능을 수행할 수 있습니다.
우선 현재 파이썬 파일이 실행되는 디렉토리 정보를 출력하는 간단한 코드를 작성하겠습니다.
- os 모듈 import
- getcwd() 함수를 호출 (이 때 cwd 는 current working directory 로 현재 작업 디렉토리를 의미합니다.)
import os
print(os.getcwd()) # 현재 디렉토리
실행하면 현재 파일이 있는 경로가 출력됩니다.
os로 폴더 생성
이번에는 폴더를 하나 만들어보겠습니다.
- 변수에 새로 만들 폴더명 할당
- os모듈을 사용해 변수와 동일한 이름의 폴더가 있는지 확인
- 확인해서 폴더가 존재하지 않는 경우에만 makedirs() 함수로 폴더 생성
import os
folder = "sample_dir"
if os.path.exists(folder): # 폴더가 존재한다면
print("이미 존재하는 폴더입니다.")
else: # 폴더가 존재하지 않으면
os.makedirs(folder) # 폴더 생성
print(folder, "폴더를 생성하였습니다.")
이렇게 실행을 하면 print문이 출력되며 폴더가 생성된다.
sample_dir 폴더를 생성하였습니다.
한번 더 실행을 하면 이미 존재하는 폴더라고 출력이 됩니다.
이미 존재하는 폴더입니다.
os로 폴더 삭제
폴더가 존재하는 경우 해당 폴더를 삭제하도록 if 문을 수정해봅시다.
os 모듈의 rmdir() 함수를 이용하여 folder 변수를 전달하면 되는데 이 때 rm 은 삭제를 의미하는 remove 의 줄임말입니다
if os.path.exists(folder): # 같은 이름의 폴더가 존재한다면
print("이미 존재하는 폴더입니다.")
os.rmdir(folder) # 폴더 삭제
print(folder, "폴더를 삭제하였습니다.") # 삭제 문구 출력
else: # 같은 이름의 폴더가 존재하지 않으면
os.makedirs(folder) # 폴더 생성
print(folder, "폴더를 생성하였습니다.")
한 번 더 프로그램을 실행시켜보면 sample_dir 폴더는 삭제되며 관련 문구가 출력됩니다.
이미 존재하는 폴더입니다.
sample_dir 폴더를 삭제하였습니다.
os로 파일 목록 출력
os 가 제공하는 함수 중에 listdir() 이라는 것이 있는데, glob 모듈의 glob() 함수와 비슷하게 현재 작업 디렉토리 내의 폴더와 파일 목록을 출력해줍니다.
다음과 같이 간단히 코드를 작성하고 실행해보겠습니다.
import os
print(os.listdir())
실행하면 현재 폴더 내의 모든 폴더와 파일 목록이 출력됩니다.
time
ime 모듈을 import 하고 나서 현재 시간 정보를 확인하기 위한 localtime() 함수를 호출하겠습니다.
import time
print(time.localtime())
time.struct_time(tm_year=2021, tm_mon=3, tm_mday=1, tm_hour=22, tm_min=46, tm_sec=4, tm_wday=0, tm_yday=60, tm_isdst=0)
실행하면 결과가 나오긴 하는데 뭔가 복잡하게 출력되어있다.
strftime()
우리가 보기 편하게 함수를 사용해서 가공을 해보자
time 모듈에는 strftime() 함수를 제공하는데 이를 이용하면 사용자가 원하는 문자열 형태로 시간 정보를 출력할 수 있습니다.
코드 의미
%Y | 년 (year) |
%m | 월 (month) |
%d | 일 (day) |
%H | 시 (hour) |
%M | 분 (minute) |
%S | 초 (second) |
날짜와 시간 정보를 "2021-10-01 22:00:00" 와 같이 출력하려면 각 자리에 맞게 코드를 입력하고 코드들 사이에 하이픈 (-) 과 콜론 (:) 을 적절히 배치하는 식으로 작성할 수 있습니다. 이 때 코드는 대소문자를 구분하므로 주의해서 사용해야 합니다.
import time
print(time.strftime("%Y-%m-%d %H:%M:%S")) # 연-월-일 시:분:초
실행 시 현재 날짜와 시간이 잘 출력됨을 확인할 수 있습니다.
2023-01-12 15:57:17
datetime
time 과 비슷한 모듈로 datetime 도 있습니다.
datetime 을 활용하여 오늘 날짜를 출력하려면 다음과 같이 할 수 있습니다.
import datetime
print("오늘 날짜는", datetime.date.today())
실행 결과는 다음과 같습니다.
오늘 날짜는 2023-01-12
D-day 계산기 timedelta
datetime 에는 timedelta() 라는 함수가 있는데 이 함수를 이용하면 두 날짜 사이의 간격을 쉽게 계산할 수 있습니다.
만약 오늘 누군가를 만나기 시작했고 오늘로부터 100 일째 되는 날을 계산한다고 가정하겠습니다.
- 오늘 날짜를 변수에 저장
- timedelta() 함수를 변수에 저장
- timedelta() 함수 인자에 days=100 입력
- 오늘날짜변수 + 함수변수 출력
import datetime
today = datetime.date.today() # 오늘 날짜 저장
td = datetime.timedelta(days=100) # 100일 저장
print("우리가 만난지 100일은", today + td) # 오늘부터 100일 후
우리가 만난지 100일은 2023-04-22
반대로 100일 전을 계산할때엔 함수에 인자에서 100을 -100으로 바꿔주면 된다!
'dev-log > python' 카테고리의 다른 글
[python] pandas 파일 저장 및 열기 (0) | 2023.01.17 |
---|---|
[python] pandas 시작하기 (0) | 2023.01.17 |
내장함수와 외장함수 (0) | 2023.01.12 |
[python] pip install (0) | 2023.01.12 |
[python] module 직접 실행 (0) | 2023.01.12 |