본문 바로가기
파이썬/파이썬 기본 문법

[파이썬] 외장함수 1

by Nov19 2018. 12. 11.
반응형



[파이썬] 외장함수 1


sys.path 파이썬 모듈들이 저장되어 있는 위치를 나타낸다

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

''는 현재 디렉터리를 말한다.


sys.path.append("모듈경로")

sys.path.append() 를 이용해 경로명을 추가할 수 있다

해당 경로에 있는 파이썬 모듈을 불러와서 사용할 수 있다.


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

pickle 모듈의 dump 함수를 이용하여 딕셔너리 객체인 data를 그대로 파일에 저장하는 방법.

import pickle

f = open("test.txt", 'wb')

data = {1: 'python', 2: 'you need'}

pickle.dump(data, f)

f.close()


pickle.load() pickle.dump에 의해 저장된 파일을 원래 딕셔너리 객체(data) 상태 그대로 불러온다.

import pickle

f = open("test.txt", 'rb')

data = pickle.load(f)

print(data)

{2:'you need', 1:'python'}

딕셔너리 객체 외 어떤 자료형이든 상관없이 저장하고 불러올 수 있다.


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

os.environ

내 시스템의 환경 변수값을 알고 싶을 때,  

시스템은 제각기 다른 환경 변수값을 가지고 있는데, os.environ은 현재 시스템의 환경 변수 값들을 보여 준다. 

import os

os.environ

environ({'PROGRAMFILES': 'C:\\Program Files', 'APPDATA': ……})

os.environ은 환경 변수에 대한 정보를 딕셔너리 객체로 리턴한다. 


os.environ['PATH']

'C:\\ProgramData\\Oracle\\Java\\javapath;...생략...'


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.copy(src, dst) 파일 복사한다.

src라는 이름의 파일을 dst로 복사한다. 만약 dst가 디렉터리 이름이라면 src라는 파일 이름으로 dst라는 디렉터리에 복사하고 동일한 파일 이름이 있을 경우에는 덮어쓴다.

>>> import shutil

>>> shutil.copy("src.txt", "dst.txt")

위 예를 실행해 보면 src.txt 파일과 동일한 내용의 파일이 dst.txt로 복사되는 것을 확인할 수 있다.


glob 특정 디렉터리에 있는 파일 이름 모두를 알아야 할 때 사용하는 모듈.

glob(pathname) 디렉터리에 있는 파일들을 리스트로 만든다.

glob 모듈은 디렉터리 내의 파일들을 읽어서 리턴한다. 

*, ? 등의 메타 문자를 써서 원하는 파일만 읽어 들일 수도 있다.

디렉터리에 있는 파일 중 이름이 문자 q로 시작하는 파일들을 모두 찾아서 읽어 들이는 예이다.

import glob

glob.glob("C:/Python/q*")

['C:\Python\quiz.py', 'C:\Python\quiz.py.bak']

 

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()


threading 모듈

threading.Thread 한 프로세스 내에서 2가지 또는 그 이상의 일을 동시에 수행하게 할 수 있다.

첫번째 인수는 함수 이름을, 두 번째 인수는 첫 번째 인수인 함수의 입력 변수를 받는다

import threading

import time

def hello(msg):

while True:

    time.sleep(1)

    print(msg)


for msg in ['one', 'two', 'three']:

    t = threading.Thread(target=say, args=(msg,))

    t.daemon = True

    t.start()

 

for i in range(100):

    time.sleep(0.1)

    print(i)

 

첫 번째 for문에서 ['one', 'two', 'three']라는 리스트의 요소 개수만큼 스레드가 생성되고, 생성된 스레드는 hello() 메서드를 수행하게 되어 1초에 한 번씩 입력으로 받은 msg 변수값을 리턴한다

두 번째 for문은 매 0.1초마다 0부터 99까지 숫자를 출력하는데, 바로 이 부분이 메인 프로그램이 되며 이 메인 프로그램이 종료되는 순간 생성된 스레드들도 함께 종료가 된다

t.daemon = True와 같이 daemon 플래그를 설정하면 주 프로그램이 종료되는 순간 데몬 스레드도 함께 종료된다.

 


반응형

댓글