본문 바로가기
Programming/Python

파이썬 코딩 따라하기(기본) - 외장함수

by Deongeun 2021. 1. 29.

 

외장함수

웹상에 python module index 를 검색하여 파이썬 라이브러리에서 필요한 것들을 가져와서 사용할 수 있다.

 

 

 

 

sys

: 프로그램 실행시 입력된 값을 읽어들일 수 있는 모듈

 

 

sys.argv

: 명령행을 통해 필요한 인자값을 받을 수 있다.

*argv: argument values(인자값)

 

 

 

아래와 같은 argv_test.py를 만들어 주고

#argv_test.py
import sys
print(sys.argv)

명령창에서 위 모듈이 저장된 파일위치에 다음과 같이 적어주면

(base)C:\python\python_practice>argv.test.py a b c

뒤의 것들이 공백을 기준으로 나뉘어 sys.argv 리스트의 요소가 된다.

['C:\\python\\python_practice\\argv.test.py', 'a', 'b', 'c']

 

 

argv_test.py 모듈창에 print(sys.argv[1])을 추가해주면

#argv_test.py
import sys
print(sys.argv)
print(sys.argv[1])
['C:\\python\\python_practice\\argv.test.py', 'a', 'b', 'c']
a

리스트에서 [1]번째 값인 'a'를 출력하는 것을 확인할 수 있다.

 

 

기본적으로 len(sys.argv)의 값은 1인데 인자값을 추가함에 따라 바뀌게 된다.

# argv_test.py
import sys
print('sys.argv 길이는? ', len(sys.argv))
(base)C:\python\python_practice>argv.test.py a b c
sys.argv 길이는? 4

 

 

 

sys.exit

: 강제로 스크립트 종료하기

ctrl Z / ctrl D 를 눌러서 대화형 인터프리터를 종료하거나, 실행중인 프로그램에서 해당 프로그램을 중단하는 것과 같다

 

 

 

sys.path

: 파이썬 모듈이 저장되어있는 위치를 나타낸다

이 위치에 있는 모듈들은 경로에 상관없이 어디서나 불러올 수 있다.

그리고 파이썬 프로그램 파일에서 sys.path.append를 통해 경로명을 추가할 수 있다.

 

 

 

 

 

os 모듈

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

 

 

os.environ

: 현재 시스템의 환경변수 값을 보여준다

import os
os.environ
environ{'ADSK_CLM_WPAD_PROXY_CHECK': 'FALSE',
        'ALLUSERSPROFILE': 'C:\\ProgramData',
        'APPDATA': 'C:\\Users\\User\\AppData\\Roaming',
        'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files',
        'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files',
        'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files',
        'COMPUTERNAME': 'DESKTOP-RFAU172',
        'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe',
        'CONDA_DEFAULT_ENV': 'base',.....생략.....

- 위는 객체가 딕셔너리로 호출되는데,

   PATH환경변수를 호출하고자 한다면 아래와 같이 나온다.

import os
os.environ['PATH']
'C:\\Users\\User\\anaconda3;C:\\Users\\User\\anaconda3\\Library\\mingw-w64\\bin;C:\\Users\\User\\anaconda3\\Library\\usr\\bin;C:\\Users\\User\\anaconda3\\Library\\bin;C:\\Users\\User\\anaconda3\\Scripts;C:\\Users\\User\\anaconda3\\bin;C:\\Users\\User\\anaconda3\\condabin;C:\\Program Files (x86)\\Common Files\\Intel\\Shared Libraries\\redist\\intel64\\compiler;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program Files (x86)\\QuickTime\\QTSystem;C:\\Users\\User\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\User\\AppData\\Local\\atom\\bin;C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38-32;C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38-32\\Scripts;.;C:\\Program Files\\JetBrains\\PyCharm 2020.1.4\\bin;.;C:\\Program Files\\JetBrains\\PyCharm Community Edition 2020.3.2\\bin;.;C:\\Users\\User\\AppData\\Local\\Microsoft\\WindowsApps'

 

 

os.chdir

: 현재 디렉터리의 위치를 변경한다

os.chdir("C:WINDOWS")

 

 

 

os.getcwd

: 현재 디렉터리의 위치를 리턴한다

>>>os.getcwd()
'C:\WINDOWS'

 

 

 

os.system

: 시스템 자체의 프로그램이나 기타 명령어들을 파이썬에서 호출할때

  os.system("명령어")로 사용한다.

 

- 현재 디렉터리에서 시스템 명령어 'dir'을 실행할때

os.system("dir")

 

 

 

os.popen

: 시스템 명령어를 실행시킨 결과값을 읽기모드 형태의 파일객체로 리턴한다

f = os.popen("dir")

 

- 읽어들인 파일 객체의 내용을 보려면 아래와 같이 해주면 된다

print(f.read())

 

 

 

os.listdir

: 디렉터리에 있는 파일들을 리스트로 가져온다 (glob와 같음)

>>>print(os.listdir())
['.idea', '2-1.py', 'A.pickle', 'argv_test.py', 'beautifulsoup_test.py', 'calculate.py', 'file.txt', 'Include', 'Lib', 'practice.py', 'practice_02.py', 'practice_03.py', 'pyvenv.cfg', 'Quiz.py', 'quiz_str.py', 'sample', 'Scripts', 'starcraft.py', 'sys.path.append_test.py', 'test.txt', 'theater_module.py', 'travel', '__pycache__']

 

 

 

기타 os 함수

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

 

 

 

 

 

shutil

: 파일을 복사해주는 파이썬 모듈

 

shutil.copy(A,B)

: A라는 이름의 파일을 B에 복사한다

만약 B가 디렉터리 이름이면 A라는 파일이름으로 B라는 디렉터리에 복사한다

동일한 파일 이름이 있을경우에는 덮어쓴다

import shutil
shutil.copy("test.txt", "file.txt")

- test.txt 파일 내용이 file.txt에 복사된 것을 확인할 수 있다.

 

 

 

 

 

glob

: 경로 내의 폴더/ 파일목록 조회를 할 수있는 모듈

 (windows에 dir과 같다)

>>>import glob
>>>print(glob.glob("*.py"))
['2-1.py', 'argv_test.py', 'beautifulsoup_test.py', 'calculate.py', 'practice.py', 'practice_02.py', 'practice_03.py', 'Quiz.py', 'quiz_str.py', 'starcraft.py', 'sys.path.append_test.py', 'theater_module.py']

- 디렉터리 내에서 .py로 끝나는 파일들을 모두 나타낸 것

 

>>>import glob
>>>glob.glob("s*")
['Scripts','sys.path.append_test.py']

- 디렉터리 내에서 s로 시작하는 파일들을 모두 나타낸 것

 

 

 

 

 

tempfile

tempfile.mktemp( )

: 중복되지 않는 임시파일의 이름을 무작위로 만들어준다

>>>import tempfile
>>>file = tempfile.mktemp()
>>>file
'C:\\Users\\User\\AppData\\Local\\Temp\\tmpsuv5_rnq'

 

 

 

tempfile.TemporaryFile( )

: 임시 저장공간으로 사용될 파일 객체를 리턴한다

 기본적으로 바이너리 쓰기 모드를 갖고 있고, f.close( )가 호출되면 파일 객체가 자동으로 사라진다

>>>import tempfile
>>>file = tempfile.TemporaryFile()
>>>f.close( )

 

 

 

 

 

time

time.time( )

: 현재시간을 실수 형태로 리턴한다

>>> import time
>>> time.time()
1612299348.4760606

 

 

 

time.localtime( )

: time.time( )의 실수값을 연도, 달, 월, 시, 분, 초의 형태로 바꿔준다

>>> time.localtime(time.time())
time.struct_time(tm_year=2021, tm_mon=2, tm_mday=3, tm_hour=5, tm_min=57, tm_sec=46, tm_wday=2, tm_yday=34, tm_isdst=0)

 

 

 

time.asctime( )

: time.localtime를 통해 나온 튜플 형태 값의 날짜와 시간을 알아보기 쉬운 형태로 바꿔준다

>>> time.asctime(time.localtime(time.time()))
'Wed Feb  3 06:02:30 2021'

 

 

 

time.ctime( )

: time.asctime()을 간편하게 time.ctime()으로 표현할 수 있는데, 다른점은 ctime은 항상 현재 시간만을 리턴한다.

>>> time.ctime()
Wed Feb  3 06:02:30 2021

 

 

 

time.strftime( )

: time.strftime('출력할 형식 코드',time.localtime(time.time())) 형태로

시간과 관련된 여러가지 포맷코드를 사용할 수 있다.

코드 설명
%c 날짜와 시간 출력
%H 시간을 24시간 형태로 출력
%I 시간을 12시간 형태로 출력
%p AM or PM 출력
%x 현재 설정된 로컬에 기반한 날짜 출력
%X 현재 설정된 로컬에 기반한 시간 출력
%Y 연도 출력

 

 

 

time.sleep( )

: 일정한 시간을 간격으로 루프를 실행할 수 있다.

>>> import time
>>> for i in range(11):
... print(i)
... time.sleep(1)
0
1
2
3
4
5
6
7
8
9

- 위의 예는 1초간격으로 숫자 0부터 9까지 출력한다

- 인수는 실수형태로 쓸 수 있어서 0.1초면 0.1이라고 쓰면 된다

 

 

 

 

 

calendar

calendar.calendar(연도)

: 그 해의 전체 달력을 볼 수 있다.

 

 

 

 

calendar.prmonth(연도, 월)

: 해당 연도의 해당 월에 대한 달력을 볼 수 있다.

 

 

 

 

 

calendar.weekday(연도, 월, 일)

: 해당 연도의 그 날짜에 해당하는 요일 정보를 알 수 있다.

월요일부터 일요일까지 0-6이라는 값을 나타낸다.

>>> import calendar
>>> calendar.weekday(2021,3,3)
2 #수요일

 

 

 

 

calendar.monthrange(연도, 월)

: 입력받은 달의 1일이 무슨 요일인지 그리고 그 달이 몇일까지 있는지를 튜플형태로 나타낸다.

>>> calendar.monthrange(2021,3)
(0,31) #2021년 3월 1일은 월요일이고, 31일까지 있다

 

 

 

 

 

random

: 규칙이 없는 임의의 수를 발생시킨다.

 

random.random( )

: 0.0 에서 1.0 사이의 실수 중에서 임의의 값을 리턴한다.

>>> import random
>>> random.random()
0.2372791744349928

 

 

 

random.randint( )

: 입력받은 범위의 정수 중에서 임의의 값을 리턴한다.

>>> import random
>>> random.randint(1,10)
2

 

 

 

random.choice( )

: 입력받은 리스트에서 무작위로 하나의 값을 선택해 리턴한다.

>>> import random
>>> range = [1,3,4,5,0]
>>> random.choice(range)
4

 

 

 

random.shuffle( )

: 입력받은 리스트의 항목을 무작위로 섞어준다.

>>> import random
>>> range = [1,3,4,5,0]
>>> random.shuffle(range)
>>> range
[3,4,1,0,5]

 

 

 

 

 

webbrowser

: 자신의 시스템에서 사용하는 기본 웹브라우저가 자동으로 실행되게 하는 모듈

 

webbrowser.open( )

: 입력받은 url로 웹브라우저를 자동 실행시킨다.

>>> import webbrowser
>>> webbrowser.open("http://naver.com")

-  웹브라우저가 이미 실행된 상태면 입력된 주소로 이동하고,

실행되지 않은 상태면 새로 웹브라우저를 실행하고 해당 주소로 이동한다.

 

 

 

 

webbrowser.open_new( )

: 이미 웹 브라우저가 실행된 상태더라도 새로운 창으로 해당 주소를 열어준다.

>>> import webbrowser
>>> webbrowser.open_new("http://naver.com")