Information Security
외장 함수 본문
외장 함수
-내부 기능을 확장하여 추가 기능을 사용할 수 있도록 도와주는 역할을 한다.
-다양한 모듈을 지원하며 사용자가 작성한 모듈도 사용할 수 있다.
-import가 필요한 모듈이다.
sys
(System specific parameters and functions)
-파이썬 인터프리터가 제공하는 변수들과 함수들을 제어할 수 있게 해주는 모듈이다.
sys.argv: 명령행에서 인자를 전달
-python 소스 수행 시, 명령형 타입의 인자를 받을 수 있도록 지원한다.
1. 위와 같이 입력한 파이썬 프로그램을 C:/python 디렉터리에 저장한다.
2. 도스 창을 열고, 파이썬 프로그램이 위치한 폴더로 이동한다.
3. sysargv_test.py 뒤에 넣어준 인자들은 리스트 sys.argv에 저장된다.
4. python 명령어 뒤의 모든 값들이 공백을 기준으로 나뉘어서 리스트의 요소가 되어 출력된다.
-인자를 입력하여 리스트 sys.argv에 저장하고 for 문을 이용하여 하나씩 출력하기
sys.exit: 소스 수행 도중 프로그램 강제 종료
-while 문에서의 break 문은 while 문을 빠져나가지만 sys.exit()는 프로그램을 강제로 종료시킨다.
OS
(Miscellaneous operating system interface)모듈
-OS 모듈은 환경 변수나 디렉터리, 파일 등의 OS자원을 제어할 수 있게 해주는 모듈이다.
1. 운영체제 관련 작업
os.name: 현재 동작하는 운영체제가 무엇인지 알려준다.
※nt: Windows NT
os.environ: 시스템의 환경 변수값을 보여준다.
-os.environ은 환경 변수에 대한 정보를 딕셔너리 형태로 출력한다.
2. 디렉터리(폴더) 관리
os.getcwd(): 현재 디렉터리의 위치를 리턴한다.
os.mkdir("디렉터리명"): 디렉터리 만들기
os.rmdir("디렉터리명"): 디렉터리 삭제하기
-디렉터리가 비어 있어야 삭제할 수 있다.
-"C:\\python\\test"와 같이 경로를 다 작성하면 번거롭고 불편하다.
-'.'은 현재 디렉터리를 의미하고 '..'은 상위 디렉터리를 의미하므로 이를 사용하면 디렉터리 명을 쓸 때 편리하다.
os.chdir("디렉터리명"): 디렉터리의 위치 변경
-상위 디렉터리로 위치를 변경했다.
3. 파일 관련 기능
os.listdir(): 현재 디렉터리의 파일, 디렉터리 리스트를 리턴한다.
os.rename(파일명, 새로운파일명): 파일을 새로운 이름으로 변경한다.
os.replace(파일명, 새로운파일명): 파일을 새로운 이름으로 변경한다.
-현재 디렉터리의 test로 exam-001.py를 이동시켰다.
-replace와 rename은 파일 이름 변경과 파일의 위치를 이동시키는 동작을 수행한다.
os.unlink(파일명): 파일 삭제
4. 시스템 명령어 연계
-운영체제에게 명령을 준다.
os.system(): 시스템 자체 프로그램이나 기타 명령어들을 파이썬에서 호출할 수 있다.
-메모장 호출하기
os.popen(): 시스템 명령어를 수행하고, 그 결과를 읽기 모드 형태의 파일 객체로 리턴한다.
-파일 객체의 내용을 보기 위해서 read()를 사용한다.
time
(Time access and conversions)
-시간에 관련된 기능을 제공하는 모듈이다.
time.time(): UTC(Universal Time Coordinated: 협정 세계 표준시)를 이용하여 현재 시간을 실수 형태로 리턴하는 함수이다. 1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초 단위로 리턴한다.
-random()처럼 난수 발생 시 많이 사용한다. 위와 같이 입력하면 0~9까지의 난수를 발생시킬 수 있다.
time.localtime(): time.time()에 의해서 반환된 값을 이용하여 연도, 월, 일, 시, 분, 초의 형태로 변경한다.
time.asctime(): time.localtime()에 의해서 반환된 튜플 형태의 값을 받아서 날짜, 시간을 보기 쉬운 형태로 출력한다.
-보기 쉬운 형태로 출력되긴 했지만 너무 길어서 입력하기가 불편하다. 간단하게 입력하려면 time.ctime()을 사용해야 한다.
time.ctime(): time.asctime()을 간편하게 입력하기 위해 사용한다.
-time.asctime()과 다르게 항상 현재 시간만을 리턴한다.
-이러한 날짜, 시간 표시 형태는 보기에 쉽긴 하지만 서양 사람에게 더 익숙하다. 우리에게 익숙한 날짜, 시간 형태를 사용하려면 time.strftime()을 사용해야 한다.
time.strftime()
사용방법: time.strftime("포맷코드", time.local(time.time()))
시간에 관련된 것을 표현하는 포맷 코드
코드 |
설명 |
%a/ %A |
요일 줄임말/ 요일 |
%b/ %B |
달 줄임말/ 달 |
%c |
날짜와 시간 |
%d |
날 |
%H/ %I |
시간(hour)-24시간 /12시간 출력 형태 |
%j |
1년 중 누적 날짜 |
%m |
달 |
%M |
분 |
%p |
AM or PM |
%S |
초 |
%U |
1년 중 누적 주- 일요일을 시작으로 |
%w |
숫자로 된 요일 |
%W |
1년 중 누적 주- 월요일을 시작으로 |
%x/ %X |
현재 설정된 로케일에 기반한 날짜/ 시간 출력 |
%Y |
연도 출력 |
%Z |
시간대 출력 |
%% |
문자 |
%y |
세기 부분을 제외한 연도출력 |
time.sleep(초): 설정된 시간만큼 시간을 지연한다.
-루프 안에서 많이 사용한다. 일정한 시간 간격을 두고 루프를 실행할 수 있다.
-1초 간격으로 0부터 9까지를 출력한다.
Calendar
-달력에 관련된 기능을 제공하는 모듈이다.
calendar.calendar(연도), calendar.prcal(연도): 주어진 연도의 달력을 출력한다.
calendar.prmonth(연도, 월): 주어진 연도의 월에 대한 달력을 출력한다.
calendar.weekday(연도, 월, 일): 주어진 날짜가 어떤 요일인지를 리턴한다.(월:0 ~ 일:6)
calendar.monthrange(연도, 월): 주어진 연도, 월이 어느 요일에 시작하며, 며칠까지 있는지를 튜플 형태로 리턴한다.
-4월은 금요일(5)에 시작하고, 30일까지 있다.
날짜를 입력받아서 요일 출력하기
random
(Generate pseudo-random numbers)
-난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다.
random.random(): 0 ~ 1.0 사이 임의의 난수를 리턴한다.
random.randint(start, stop): start ~ stop 사이의 정수 중에서 임의의 난수를 리턴한다.
random.randrange(start, stop, step): start ~ stop 사이의 step 만큼 건너뛴 정수 중에서 임의의 난수를 리턴한다.
random.shuffle(리스트): 주어진 리스트의 요소들을 섞는다.
random.choice(리스트): 주어진 리스트의 요소를 무작위로 선택한다.
pickle
(Python object serialization)
-객체의 형태를 유지하면서 파일에 저장하고, 불러올 수 있게 해주는 모듈이다.
pickle.dump(데이터, 파일변수): 데이터를 파일에 저장한다.
-pickle 모듈의 dump 함수를 이용하여 딕셔너리 데이터가 저장된 객체 data를 파일에 저장한다.
pickle.load(파일변수): 저장된 내용을 불러온다.
tempfile
tempfile.mktemp(): 중복되지 않는 임시 파일의 이름을 생성한다.
tmepfile.NamedTemporaryFile(): 임시 저장 공간으로 사용될 파일 객체를 리턴한다. f.close()가 호출되면 이 파일 객체는 자동으로 사라진다.