파이썬(Python)

파이썬 - 읽고 쓰기와 모듈(Module)

BlueNoa 2023. 1. 19. 04:47
728x90
반응형

•Python의 읽고 쓰기

파이썬에서는 외부 파일을 가져와서 읽거나 작성한 내용을 저장하는 기능을 지원한다.

 

# 기본적인 파일 생성 방법은

 

객체명 = open("파일명.txt", 'w')

프로그램이 작동되는 구간

객체명.close()

 

의 형태다. 여기서 open 명령어의 열기모드만 변경해 주면 읽기와 쓰기가 가능하다.

파일 open 명령어 설명
r 읽기 - 파일의 내용을 가져올 때 사용
w 쓰기 - 작성한 내용을 파일로 만들어 저장할 때 사용
a 추가 - 파일의 마지막 내용에 추가적인 내용을 저장할 때 사용
반응형

•모듈(Module)

모듈은 소스 코드를 재사용이 가능하게 해주는 공간으로 구분하고 관리하는 실행 단위이다.

모듈들은 하나의 물리적인 파일로 처리되며 표준 모듈, 사용자 정의 모듈, Third Party(외부) 모듈로 구분할 수 있다.

모듈은 패키지로 관리되고 모듈의 구성으로는 명령문, 전역 변수, 함수, 클래스, 모듈 등으로 이루어져 있다.

 

* 외부 모듈 같은 경우 유료일 수도 있다. 반대로 말하면 만들어서 팔 수도 있다는 것이다.

 

모듈을 사용하면 코드를 중복해서 사용하는 것을 막아줄 수 있고, 전체적인 코드의 구조를 분리하여 정리할 수 있다.

그 외에도 동일한 이름의 함수 및 변수 등을 임의의 모듈마다 설정해 놓을 수 있어서 개발자들의 가장 큰 고민 중 하나인 '이름 짓기'에 대한 부담을 줄여줄 수 있다.

 

# 모듈의 호출 우선순위

(1) 메모리에 기억되어 있는 모듈

(2) 현재 작성 중인 파일과 같은 위치에 있는 '.py' 파일

(3) 환경변수(PYTHONPATH)에 등록된 경로에 있는 파일

(4) 표준 모듈 목록

 

#모듈의 호출법

import 모듈명 - 해당 모듈명의 모듈을 가져온다.

as(alias) - 모듈의 이름을 사용자의 입맛에 맞게 별명 지정할 수 있다.

from 모듈명 import 함수명1, 함수명2, ... - 특정 모듈의 함수만 따로 불러올 수 있다.

from 모듈명 import * - 해당 모듈의 모든 함수(기능)들을 불러온다.

* 추가적으로 from을 통해 불러올 경우 모듈명을 생략하고 함수명으로 바로 사용할 수 있다.

 

# 모듈 관련 명령어

- 현재 자신의 PC에 있는 모듈을 확인

help("modules")
Cython              conda_verify        multiprocessing     soupsieve
IPython             configparser        munkres             sphinx
Levenshtein         contextlib          mypy_extensions     sphinxcontrib
MySQLdb             contextlib2         nacl                spyder
OpenSSL             contextvars         navigator_updater   spyder_kernels
PIL                 cookiecutter        nbclassic           sqlalchemy
PyQt5               copy                nbclient            sqldf
__future__          copyreg             nbconvert           sqlite3
.
.
.

해당 결과는 사용자마다 다를 수 있다.

 

- 설치된 모듈의 위치를 확인하는 명령어

import sqlite3
print(sqlite3.__file__)

설치된 위치도 사람마다 다를 수 있다.

 

# 표준 모듈

기본적으로 파이썬을 설치할 때 같이 따라오는 모듈들이다.

import sys
print(sys.path) # 현재 설정된 파일의 경로를 나열한다.

import os
print(os.getcwd()) # 마찬가지로 파일의 경로들을 표시해준다.

- 수학 관련 모듈

import math as m # m이라고 별명을 지어준다.
print("파이의 값 : ", m.pi) # 괄호가 없다는 것은 전역변수, pi는 고정값
print("30 라디안의 sin 값 : ", m.sin(30)) # 30 라디안의 sine값을 반환
print("30을 라디안에서 각도로 바꾼 경우 : ", m.degrees(30))
print(m.sin(m.degrees(30))) # 각도 30을 라디안에서 degree(도)로 변경 후 sin값 반환
# 호도법 : 라디안을 단위로 하여 각도를 나타내는 방법
# π라디안 : 180°
# 1라디안 : 180°/π, 1° = π/180°
print(m.sin(30 * (m.pi/180))) # 우리가 흔히 사용하는 sin30°의 값

이외에도 여러 math 모듈의 명령어를 찾아볼 수 있다.

https://docs.python.org/ko/3/library/math.html#trigonometric-functions

파이의 값 :  3.141592653589793
30 라디안의 sin 값 :  -0.9880316240928618
30을 라디안에서 각도로 바꾼 경우 :  1718.8733853924696
-0.4097717985741408
0.49999999999999994

- 달력 관련 모듈

import calendar as c
# 0 : 월요일 ~ 6 : 일요일
c.setfirstweekday(6) # 달력의 시작 요일을 '일요일'로 지정
c.prmonth(2023, 3) # 3월의 달력 출력
# c.calendar(2023) # 23년도 전체 달력을 출력한다.
     March 2023
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

- random 관련 모듈

print('난수 출력 --- ')
import random as r
# r.seed(2) # 매번 무작위로 나오지 않고 난수표를 이용하여 고정된 값을 출력하도록 한다.
print('[0.0 ~ 1.0) 범위 내 임의의 부동 소수점 반환 : ', r.random()) # 모듈명(모듈 또는 함수)
print('범위 내의 무작위 정수 : ', r.randint(1, 10))
print(r.randrange(1, 11)) # randrange(start, stop, step)

https://docs.python.org/ko/3/library/random.html?highlight=random#module-random 

[0.0 ~ 1.0) 범위 내 임의의 부동 소수점 반환 :  0.43995387322217683
범위 내의 무작위 정수 :  3
6

# 사용자 모듈

사용자 모듈은 직접 사용하는 사람이 자유롭게 만들 수 있기 때문에 가능성이 매우 많다.

간단한 예시로 'study.py', 'study2.py'라는 파일을 사용해서 사용자 모듈의 예시를 들어볼 것이다.

맨 위에서 언급한 저장방법도 응용해서 실행해보자.

(study2.py)

# 단순 더하기
def addtion(*arg):
    result = 0
    for i in arg:
        result += i
    result = str(result) # 저장하기 위해 int를 str로 변형
    print(result)
    # 파일 저장 공간은 사용자마다 다를 수 있다.
    output = open("C:/Users/Jo/OneDrive/Desktop/result.txt", 'w')
    output.write(result)
    output.close()

(study.py)

# 사용자 모듈
import random as r
r.seed(2) # 난수 고정
a = r.choices(range(1,31), k = 10) # 해당 범위에서 10개만 랜덤 선택
b = r.choices(range(31,51), k = 10) # 중복 허용, 싫으면 sample 사용
list_1 = list(a) # 리스트 생성
list_2 = list(b)
print(list_1, list_2) # 확인용

# 메인 모듈 확인용, 메인 모듈에서 실행된다.
def Main_check():
    if __name__ == '__main__':
        print('메인 모듈')
Main_check()

# study2.py를 사용자 모듈로 불러오기
import pack_other.study2 as study2 # pack_other 패키지의 study2파일을 불러온다.
# a, b로부터 3개씩 샘플을 뽑는다.
leng = len(a) # a 리스트의 길이(개수)
for i in r.sample(range(0, leng), k = 1):
    # print(i) # 0 번째 당첨
    p = a[i]
    q = b[i]
study2.addtion(p, q) # study2의 addtion 함수를 실행.

파일 또한 바탕화면에 잘 저장된 것을 확인할 수 있었다.

[29, 29, 2, 3, 26, 23, 21, 10, 19, 19] [42, 34, 39, 38, 45, 50, 49, 41, 39, 36]
메인 모듈
71

•그래픽 모듈

해당 내용은 추가적인 내용으로 '이런 것도 있다' 정도로 정리해두려고 한다.

이외에도 turtle 모듈에 대해 검색해보면 별 그리기나 다양한 문양들을 그려볼 수 있다.

# 그래픽 지원 모듈
import turtle as t
a = t.Pen()
# for문을 사용해서 반복작업을 해도 된다.
a.forward(100) # 100 이동
a.right(90) # 90도 회전
a.forward(100)
a.right(90)
a.forward(100)
a.right(90)
a.forward(100)
a.right(90)
t.done()

위 코드를 실행하여 나온 결과

 

728x90
반응형