TobeSteady

[Python] 외장함수 본문

Languages/Python

[Python] 외장함수

NKUT 2023. 3. 22. 18:46

<목차>

외장함수

sys 모듈

: 시스템과 관련된 함수나 변수를 담고 있는 모듈.

- sys.exit함수 : 파이썬 프로그램 자체를 종료시킴.

import sys 

print(list(zip([1, 2, 3],[4, 5, 6], [7, 8, 9])))

sys.exit()

print(list(zip("abc","def")))
  • 결과값

    [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

    An exception has occurred, use %tb to see the full traceback.

    SystemExit

    C:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:3452: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

- sys.path 변수 : 모듈이 저장되어 있는 경로를 반환.

print(sys.path)
  • 결과값

    ['C:\\Users\\고유정\\python', 'C:\\Anaconda3\\python39.zip', 'C:\\Anaconda3\\DLLs', 'C:\\Anaconda3\\lib', 'C:\\Anaconda3', '', 'C:\\Anaconda3\\lib\\site-packages', 'C:\\Anaconda3\\lib\\site-packages\\locket-0.2.1-py3.9.egg', 'C:\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\Anaconda3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\고유정\\.ipython']

pickle 모듈

: 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 해주는 모듈.

'''
hello.txt파일에 
hello라는 내용을 쓰고 저장.
'''
f = open('hello.txt', 'w') 

f.write("hello")

f.close()
'''
list.txt파일에 
list라는 내용을 쓰고 저장.
'''

with open ('list.txt', 'w') as f:
    f.write(['a', 'b', 'c'])
  • pickle. dump 와 wb(바이너리) 파일
    • 파일을 확인해보면 파일이 깨짐
      • 바이너리 파일이기 때문에 시스템만 인식을 할 수 있음.
      • 우리가 아는 문자는 ASCII Text파일.

'''
pickle 모듈을 불러오기.
with문으로 파일 열기(모드에 wb가 와야 함.)
pickle 모듈의 dump함수를 사용.
- 인자를 두개 사용
 - 첫 번째 인자에는 리스트
 - 두 번째 인자에는 with문으로 불러들인 변수
'''

import pickle

with open ('list.txt', 'wb') as f: #pickle모듈 사용시 모드에 'wb'입력.
    pickle.dump (['a', 'b', 'c'],f )

파일 모드

  • r : 읽기모드
  • w : 쓰기모드
  • x : 쓰기모드(파일이 있으면 오류 발생)
  • a : 추가모드(파일이 있으면 뒤에 내용을 추가)
  • + : 읽기, 쓰기 모드
  • t : 텍스트 모드
  • b : 바이너리 모드 (바이너리 파일은 사용자가 읽을 수 없음.)

§ ascll 모드로 불러오기 . - 객체 형태를 그대로 유지(pickle모듈)

pickle 모듈을 사용하여 데이터를 불러올 경우 변수 지정을 해줘야 함.

'''
with문으로 파일 열기(모드에 rb가 와야 함.)
pickle모듈의 load함수 사용.

    - 입력값으로 파일을 열 때 사용했던 변수를 사용.
    - data변수에 저장.
    
data를 출력.
'''

import pickle

with open("list.txt", 'rb') as f :
    data = pickle.load(f)
    print(data)

['a', 'b', 'c']

print(data) #data에 이미 내용이 들어가 있으므로 with문 밖에서도 출력가능.

['a', 'b', 'c']

OS모듈

: 운영체제를 제어할 때 사용하는 모듈 _ 실전에서 많이 사용됨.

getcwd 함수 :작업 폴더 확인(현재 작업하고 있는 디렉토리 확인).

import os
os.getcwd()

'C:\\Users\\고유정\\python'

chdir 함수 : 작업 폴더 이동.

os.chdir('C:\\Users\\고유정') #입력값으로 상위 경로 입력. 문자열이기 때문에 '' 콤마 주의해야됨.
os.getcwd()

'C:\\Users\\고유정'

os.chdir('C:\\Users\\고유정\\python')
os.getcwd()

'C:\\Users\\고유정\\python'

시스템 명령어 호출 _ cmd창에서 사용(jupyter notebook에서 사용 안됨)

cmd or terminal 창에서 python 실행 후 실습

  • 윈도우 : dir 명령어, cls 명령어
  • mac(linux) : ls 명령어, clear 명령어

윈도우 실습

  • >>>import os
  • >>>os.system('dir')
  • >>>os.system('cls')

mkdir함수 :폴더 생성.

os.mkdir('test_folder')

rmdir함수: 폴더 제거. _ 폴더 내부에 파일이 없을 경우만 가능.

os.rmdir('test_folder')

unlink 함수: 파일 제거.

# with open('foo.txt.', 'w') as f:
#			f.write("hi")

os.unlink('foo.txt') # 확장자 명까지 입력해줘야 함.

rename 함수 : 파일 이름 변경.

  • 인자 2개 필요.(파뀌기 전 파일명, 바꾼 후 파일명)
os.rename('list.txt' , 'list2.txt')

shutil 모듈

copy 함수 : 파일을 복사. _ 복사 결과 파일과 이름이 같은 파일이 있을 경우 덮어써짐.

• 인자 2개 필요.(복사대상, 복사 결과 파일)

import shutil
shutil.copy ('list2.txt', 'list.txt')

'list.txt'

glob 모듈

: 폴더와 파일 이름을 입력하면 해당 조건에 맞는 파일의 전체 이름 검색

glob 함수

: list로 시작하는 모든 파일 검색(파일의 전체이름)

: 경로\\list*

import glob 

glob.glob('C:\\Users\\고유정\\python\\list*') # 리스트 형태로 출력됨.

['C:\\Users\\고유정\\python\\list.txt', 'C:\\Users\\고유정\\python\\list2.txt']

random 모듈

: 규칙이 없는 숫자를 발생.

random함수 : 0과 1 사이의 실수가 반환. (1은 나오지 않음)

import random

print(random.random())

0.5276531448673321

random.random()

0.9110682156140525 : 입력시마다 다르게 변화.

randint함수

• 인자를 2개 사용(최소값, 최대값)

random.randint(1, 10)
random.randint(1, 10)

10

4 : 입력시마다 다르게 변화.

random.randint(1, 19.5) # 오류 발생. _ 정수만 사용가능.

ValueError: non-integer stop for randrange()

uniform 함수 : 무작위 실수 발생.

• 인자를 2개 사용(최소값, 최대값)

random.uniform(10, 20) # 10과 20이 포함되어서 램덤으로 출력됨.

16.184382078216707

choice 함수 : 무작위로 하나를 고르는 함수

무작위 뽑기. (문자도 가능함)

choice함수를 사용하지 않았을 때

data = [1, 2, 3]

def random_pop(i) :
    number = random.randint(0,len(i)-1) # 0부터 2까지 숫자 정수 아무거나 하나 뽑기. _ 리스트 data의 인덱스
    return i.pop(number)
    
while data :  #pop()함수로 data 요소가 하나씩 없어지므로 while 구문이 True가 끝날 때까지 즉, 리스트가 비워질 때 까지 실행됨.
    print(random_pop(data))

3 1 2

choice를 사용했을때

data = [1, 2, 3] # random.choice(자료형) 

def random_pop(i):
    number= random.choice(i)
    i.remove(number) # data를 튜플로 만들면 choice는 가능하나 remove가 불가능함.
    return number 

while data : # while bool(data) == True:
    print(random_pop(data))

1

2

3

shuffle 함수 : 무작위 숫자 섞기

data = [1, 2, 3, 4]

random.shuffle(data)

print(data)

[4, 3, 2, 1]


Uploaded by N2T

'Languages > Python' 카테고리의 다른 글

[Python] 내장함수  (0) 2023.03.22
[Python String Methods] title과 capitalize함수 차이  (0) 2023.01.10
time  (1) 2022.12.30
Bitwise Operators  (0) 2022.12.30
python 진법 변환  (1) 2022.12.30