Wisdom’s Cloud

[PYTHON] 12. 외장 함수 본문

PYTHON

[PYTHON] 12. 외장 함수

지혜로운지혜쓰 2021. 2. 25. 19:08
sys
  • sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.

  • 명령 행에서 인수 전달하기 - sys.argv

# C:/doit/Mymod 디렉터리에 argv_test.py라는 이름으로 다음과 같은 파이썬 프로그램을 작성한다.
import sys
print(sys.argv)

# 명령 프롬프트 창에서 mymod 디렉터리로 들어간 뒤 다음과 같이 실행한다.
C:/doit/Mymod> python argv_test.py you need python
['argv_test.py', 'you', 'need', 'python']

# python 명령어 뒤의 모든 것들이 공백을 기준으로 나뉘어서 sys.argv 리스트의 요소가 되는 것을 확인할 수 있다.

 

  • 강제로 스크립트 종료하기 - sys.exit

# sys.exit는 Ctrl+Z나 Ctrl+D를 눌러서 대화형 인터프리터를 종료하는 것과 같은 기능을 한다.
# 즉, 프로그램 파일 안에서 사용하면 프로그램을 중단시킨다.
>>> sys.exit()

 

  • 자신이 만든 모듈 불러와 사용하기 - sys.path

# sys.path는 파이썬 모듈들이 저장되어 있는 위치를 나타낸다.
# 즉, 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있다.
>>> import sys
>>> sys.path
['', 'C:\\Windows\\SYSTEM32\\python37.zip', 'C:\\Python37\\DLLs',
'C:\\Python37\\lib', 'C:\\Python37', 'C:\\Python37\\lib\\site-packages']

# 다음과 같이 파이썬 프로그램 파일에서 sys.path.append를 사용해 경로 이름을 추가할 수 있다.
# 이렇게 하고 난 후에는 C:/doit/Mymod 디렉터리에 있는 파이썬 모듈을 불러와서 사용할 수 있다.
>>> import sys
>>> sys.path.append("C:/doit/Mymod")

 

 

pickle
  • pickle은 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.

# 다음 예는 pickle 모듈의 dump 함수를 사용하여 딕셔너리 객체인 data를 그대로 파일에 저장하는 방법을 보여준다.
>>> import pickle
>>> f = open("test.txt", 'wb')
>>> data = {1: 'python', 2: 'you need'}
>>> pickle.dump(data, f)
>>> f.close()

# 다음은 pickle.dump로 저장한 파일을 pickle.load를 사용해서 원래 있던 딕셔너리 객체(data) 상태 그대로 불러오는 예이다.
>>> import pickle
>>> f = open("test.txt", 'rb')
>>> data = pickle.load(f)
>>> print(data)
{1: 'python', 2: 'you need'}

 

 

os
  • os 모듈은 환경 변수나 디렉터리, 파일 등의 OS 자원을 제어할 수 있게 해주는 모듈이다.

  • 내 시스템의 환경 변수 값을 알고 싶을 때 - os.environ

# 시스템은 제각기 다른 환경 변수 값을 가지고 있는데, os.environ은 현재 시스템의 환경 변수 값을 보여준다.
>>> import os
>>> os.environ
environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': ...생략...})

# 돌려받은 객체가 딕셔너리이기 때문에 다음과 같이 호출할 수 있다.
>>> os.environ['PATH']
'C:\\Windows\\system32; ...생략...'

 

  • 디렉터리 위치 변경하기 - os.chdir

# os.chdir를 사용하면 다음과 같이 현재 디렉터리 위치를 변경할 수 있다.
>>> os.chdir("C:\WINDOWS")

 

  • 디렉터리 위치 돌려받기 - os.getcwd

# os.getcwd는 현재 자신의 디렉터리 위치를 돌려준다.
>>> os.getcwd()
'C:\WINDOWS'

 

  • 시스템 명령어 호출하기 - os.system

# os.system("명령어")를 사용하여 시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출할 수 있다.
>>> os.system("dir")

 

  • 실행한 시스템 명령어의 결괏값 돌려받기 - os.popen

# os.popen은 시스템 명령어를 실행한 결괏값을 읽기 모드 형태의 파일 객체로 돌려준다.
>>> f = os.popen("dir")

# 읽어 들인 파일 객체의 내용을 보기 위해서는 다음과 같이 하면 된다.
>>> print(f.read())

 

  • 기타 유용한 os 관련 함수

함수 설명
os.mkdir(디렉터리) 디렉터리를 생성한다.
os.rmdir(디렉터리) 디렉터리를 삭제한다.
단 디렉터리가 비어 있어야 삭제가 가능하다.
os.unlink(파일 이름) 파일을 지운다.
os.rename(src,dst) src라는 이름의 파일을 dst라는 이름으로 바꾼다.

 

 

shutil
  • shutil은 파일을 복사해 주는 파이썬 모듈이다.

# 다음 예시는 src라는 이름의 파일을 dst로 복사한다.
# 만약 dst가 디렉터리 이름이라면 src라는 파일 이름으로 dst 디렉터리에 복사하고 동일한 파일 이름이 있을 경우에는 덮어쓴다.
>>> import shutil
>>> shutil.copy("src.txt", "dst.txt")

 

 

glob
  • 가끔 파일을 읽고 쓰는 기능이 있는 프로그램을 만들다 보면 특정 디렉터리에 있는 파일 이름 모두를 알아야 할 때가 있는데, 이럴 때 사용하는 모듈이 바로 glob이다.

  • 디렉터리에 있는 파일들을 리스트로 만들기 - glob(pathname)

# glob 모듈은 디렉터리 안의 파일들을 읽어서 돌려주며, '*', '?' 등 메타 문자를 써서 원하는 파일만 읽어 들일 수도 있다.
# 다음은 C:/doit 디렉터리에 있는 파일 중 이름이 mark로 시작하는 파일을 모두 찾아서 읽어 들이는 예이다.
>>> import glob
>>> glob.glob("C:/doit/mark*")
['C:/doit\\marks1.py', 'C:/doit\\marks2.py', 'C:/doit\\marks3.py']

 

 

tempfile
  • 파일을 임시로 만들어서 사용할 때 유용한 모듈이 바로 tempfile이다.

# tempfile.mktemp()는 중복되지 않는 임시 파일의 이름을 무작위로 만들어서 돌려준다.
>>> import tempfile
>>> filename = tempfile.mktemp()
>>> filename
'C:\WINDOWS\TEMP/~-275151-0'

# tempfile.TemporaryFile()은 임시 저장 공간으로 사용할 파일 객체를 돌려준다.
# 이 파일은 기본적으로 바이너리 쓰기 모드(wb)를 가지며, f.close()가 호출되면 이 파일 객체는 자동으로 사라진다.
>>> import tempfile
>>> f = tempfile.TemporaryFile()
>>> f.close()

 

 

time
  • 시간과 관련된 time 모듈에는 함수가 굉장히 많다.

  • time.time

# time.time()은 UTC(협정 세계 표준시)를 사용하여 현재 시간을 실수 형태로 돌려주는 함수이다.
# 1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초 단위로 돌려준다.
>>> import time
>>> time.time()
1614245251.179142

 

  • time.localtime

# time.localtime은 time.time()이 돌려준 실수 값을 사용해서 연도, 월, 일, 시, 분, 초, ...의 형태로 바꾸어주는 함수이다.
>>> time.localtime(time.time())
time.struct_time(tm_year=2021, tm_mon=2, tm_mday=25, tm_hour=18, tm_min=29, tm_sec=13, tm_wday=3, tm_yday=56, tm_isdst=0)

 

  • time.asctime

# time.localtime에 의해서 반환된 튜플 형태의 값을 인수로 받아서 날짜와 시간을 알아보기 쉬운 형태로 돌려주는 함수이다.
>>> time.asctime(time.localtime(time.time()))
'Thu Feb 25 18:30:59 2021'

 

  • time.ctime

# time.asctime(time.localtime(time.time()))은 time.ctime()을 사용해 간편하게 표시할 수 있다.
# asctime과 다른 점은 ctime은 항상 현재 시간만을 돌려준다는 점이다.
>>> tiem.ctime()
'Thu Feb 25 18:32:55 2021'

 

  • time.strftime

# strftime 함수는 시간에 관계된 것을 세밀하게 표현하는 여러 가지 포맷 코드를 제공한다.
>>> time.strftime('출력할 형식 포맷 코드', time.localtime(time.time()))
코드 설명
%a 요일 줄임말 Mon
%A 요일 Monday
%b 달 줄임말 Jan
%B January
%c 날짜와 시간을 출력함 21/02/25 18:42:33
%d 00 부터 31
%H 시간: 24시간 출력 형태 00 부터 23
%I 시간: 12시간 출력 형태 01 부터 12
%j 1년 중 누적 날짜 001 부터 366
%m 01 부터 12
%M 01 부터 59
%p AM or PM AM
%S 00 부터 61
%U 1년 중 누적 주: 일요일을 시작으로 00 부터 53
%w 숫자로 된 요일: 일요일부터 0 0 부터 6
%W 1년 중 누적 주: 월요일을 시작으로 00 부터 53
%x 현재 설정된 지역에 기반한 날짜 출력 21/02/25
%X 현재 설정된 지역에 기반한 시간 출력 18:42:33
%Y 연도 출력 2021
%Z 시간대 출력 대한민국 표준시
%% 문자 %
%y 세기 부분을 제외한 연도 출력 21

 

  • time.sleep

# time.sleep 함수는 주로 루프 안에서 많이 사용하며, 이 함수를 사용하면 일정한 시간 간격을 두고 루프를 실행할 수 있다.
# 다음 예는 1초 간격으로 0부터 9까지의 숫자를 출력한다.
>>> import time
>>> for i in range(10)"
...    print(i)
...    time.sleep(1)
... 

 

 

calendar
  • calendar는 파이썬에서 달력을 볼 수 있게 해주는 모듈이다.

  • calendar.calendar

# calendar.calendar(연도)를 사용하면 그 해의 전체 달력을 볼 수 있다. 결과값은 너무 길어서 생략하겠다.
>>> import calendar
>>> calendar.calendar(2021)

 

  • calendar.prcal

# calendar.prcal(연도)를 사용해도 위와 똑같은 결괏값을 얻을 수 있다.
>>> calendar.prcal(2021)

# 다음 예는 2021년 12월의 달력만 보여준다.
>>> calendar.prmonth(2021, 12)

 

  • calendar.weekday

# calendar.weekday(연도, 월, 일) 함수는 그 날짜에 해당하는 요일 정보를 돌려준다.
# 월요일은 0, 화요일은 1, 수요일은 2, 목요일은 3, 금요일은 4, 토요일은 5, 일요일은 6이라는 값을 돌려준다.
>>> calendar.weekday(2021, 02, 25)
3

 

  • calendar.monthrange

# calendar.monthrange(연도, 월) 함수는 입력받은 달의 1일이 무슨 요일인지와 그 달이 며칠까지 있는 지를 튜플 형태로 돌려준다.
>>> calendar.monthrange(2021, 02)
(0, 28)

 

 

random
  • random은 난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다.

# 다음은 0.0에서 1.0 사이의 실수 중에서 난수 값을 돌려주는 예이다.
>>> import random
>>> random.random()
0.9750141685719134

# 다음 예는 1에서 10 사이의 정수 중에서 난수 값을 돌려준다.
>>> random.randint(1, 10)
7

# random 모듈을 사용해서 함수를 하나 만들어 보자.
import random
def random_pop(data):
   number = random.randint(0, len(data)-1)
   return data.pop(number)
   
if __name__ == "__main__":
   data = [1, 2, 3, 4, 5]
   while data: print(random_pop(data))
# 위 random_pop 함수는 리스트의 요소 중에서 무작위로 하나를 선택하여 꺼낸 다음 그 값을 돌려주고, 꺼낸 요소는 pop 메서드에 의해 사라진다.

# random_pop 함수는 random 모듈의 choice 함수를 사용하여 다음과 같이 좀 더 직관적으로 만들 수도 있다.
# random.choice 함수는 입력으로 받은 리스트에서 무작위로 하나를 선택하여 돌려준다.
def random_pop(data):
   number = random.chocie(data)
   data.remove(number)
   return number
   
# 리스트의 항목을 무작위로 섞고 싶을 때는 random.shuffle 함수를 사용하면 된다.
>>> import random
>>> data = [1, 2, 3, 4, 5]
>>> random.shuffle(data)
>>> data
[5, 3, 1, 4, 2]

 

 

webbrowser
  • webbrowser는 자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행하는 모듈이다.

# 다음 예제는 웹 브라우저를 자동으로 실행하고 해당 URL인 google.com으로 가게 해준다.
# webbrower의 open 함수는 웹 브라우저가 이미 실행된 상태라면 입력 주소로 이동한다.
# 만약 웹 브라우저가 실행되지 않은 상태라면 새로 웹 브라우저를 실행한 후 해당 주소로 이동한다.
>>> import webbrower
>>> webbrowser.open("http://google.com")

# open_new 함수는 이미 웹 브라우저가 실행된 상태이더라도 새로운 창으로 해당 주소가 열리게 한다.
>>> webbrowser.open_new("http://google.com")

'PYTHON' 카테고리의 다른 글

[PYTHON] 14. 정규 표현식  (0) 2021.03.03
[PYTHON] 13. 파이썬으로 간단한 프로그램 만들기  (0) 2021.02.26
[PYTHON] 11. 내장 함수  (0) 2021.02.25
[PYTHON] 10. 예외 처리  (0) 2021.02.24
[PYTHON] 9. 패키지  (0) 2021.02.24