Python
Python - 10. 중요 모듈 (수학, 파일 입출력)
꿀먹는매미
2021. 3. 11. 11:51
많이 쓰이는 중요 모듈중에서 수학과 관련된 모듈이 있다.
대부분의 수학관련 함수가 math 모듈에 존재하지만 자주 사용되는 함수들은 내장 함수로 제공되고 있다.
sum( iterable[, start] ) - 총합(시작값 x -> 0 )
max
min
abs
pow
round
divmod
- Math 모듈
소수점 올림 / 내림 / 버림
# math01.py
import math
# 올림
print( math.ceil( 3.4 ) )
print( math.ceil( 3.5 ) )
print( math.ceil( 3.6 ) )
# 내림
print( math.floor( 3.4 ) )
print( math.floor( 3.5 ) )
print( math.floor( 3.6 ) )
# 버림(정수부분만 반환)
print( math.trunc( 3.4 ) )
print( math.trunc( 3.5 ) )
print( math.trunc( 3.6 ) )
추가적으로 다양한 수치연산과, 지수, 로그 연산, 삼각함수 연산을 제공
분수모듈(fractions) / 십진법모듈(Decimal) 도 있음
- Random 모듈
# random01.py
import random
# 0 <= x < 1 실수
print( random.random() )
print( random.random() )
print( random.random() )
# 3 <= x < 4 실수
print( random.uniform( 3, 4) )
print( random.uniform( 3, 4) )
print( random.uniform( 3, 4) )
# 0 <= x < 10 정수
print( int( random.random() * 10 ) )
print( int( random.random() * 10 ) )
print( int( random.random() * 10 ) )
print( random.randint( 0, 10 ) )
print( random.randint( 0, 10 ) )
print( random.randint( 0, 10 ) )
range(0, 10)
print( random.randrange(10) )
print( random.randrange(10) )
print( random.randrange(10) )
# 0 <= x < 20 정수 10개 중복없이 추출
print( random.sample( range(20), 10 ) )
- 파일시스템
- os / glob / tree
# os03.py
import os
# 입력받은 정보를 절대경로로 반환
print( os.path.abspath( 'tmp' ) )
# 입력받은 경로의 파일크기 반환
print( os.path.getsize( 'C:\\python\\python3.9\\python.exe' ) )
# isfile / isdir
print( os.path.isfile( 'C:\\python\\python3.9\\python.exe' ) )
print( os.path.isdir( 'C:\\python\\python3.9\\python.exe' ) )
# join / split
print( os.path.join( 'C:\\python\\', 'python3.9', 'python.exe' ) )
print( os.path.join( 'C:\\python3\\', 'C:\\python\\python3.9', 'python.exe' ) )
print( os.path.split( 'C:\\python\\python3.9\\python.exe' ) )
- glob - 윈도우의 dir / 리눅스의 ls 명령어와 유사한 기능
glob() - 모든 파일 및 디렉터리의 리스트 반환
iglob() - 이터레이터를 반환해서 원하는대로 출력 가능
# glob01.py
import glob
#print( glob.glob( 'c:Python/*' ) )
#print( glob.glob( './*' ) )
for file in glob.iglob( './*' ) :
print( file )
- tree - os.path와 glob을 이용해서 tree 구조 만들기
# tree01.py
import glob, os.path
ndir = nfile = 0
def traverse( dir, depth ):
global ndir, nfile
for obj in glob.glob( dir + '/*' ):
if depth == 0:
prefix = '|--'
else:
prefix = '|' + ' ' * depth + '|--'
if os.path.isdir( obj ):
ndir += 1
print( prefix + os.path.basename(obj) )
traverse( obj, depth + 1 )
elif os.path.isfile( obj ):
nfile += 1
print( prefix + os.path.basename( obj ) )
else:
print( prefix + 'unknown object :', obj )
if __name__ == '__main__':
traverse( '.', 0 )
print( '\n', ndir, 'directories,', nfile, 'files' )
- 파일 입출력 (p.179~)
- 파일 열기 / 쓰기
open() - 파일 열기 ( 디폴트: 텍스트 쓰기모드 wt )
'w' - 쓰기모드 / 'r' - 읽기모드 / 'a' - 쓰기 + 이어쓰기
/ 'b' - 바이너리 모드 / 't' - 텍스트 모드 / '+' - 읽기 + 쓰기 모드
write() - 문자열 쓰기
writelines() - 문자열 여러줄 쓰기
close() - 파일 닫기 (열었으면 반드시 닫기 해줘야함)
# ex01.py
f = open( './test1.txt', 'w', encoding='utf-8' )
#f = open( './test1.txt', 'a', encoding='utf-8' )
#print( f )
'''
f.write( 'Hello\n' )
f.write( 'Hello\n' )
f.write( 'Hello\n' )
'''
lines = [
'Hello 1\n',
'Hello 2\n',
'Hello 3\n'
]
f.writelines( lines )
print( '저장 완료' )
f.close();
#print( f.closed ) # close 여부를 반환
- 파일 읽기 - readline() / readlines()
# ex02.py
print( '시작' )
try:
f = open( './test1.txt', 'r', encoding='utf-8' )
#print( f )
#read() - binary 파일 읽을때 (한 바이트씩)
'''
line = f.readline()
print( line, end='' )
line = f.readline()
print( line, end='' )
'''
while True:
line = f.readline()
if not line:
break
print( line, end='' )
f.close()
except FileNotFoundError as e:
print( '[에러] ', e )
print( '끝' )
# ex03.py
print( '시작' )
try:
f = open( './test1.txt', 'r', encoding='utf-8' )
#lines = f.readlines()
#print( lines )
for line in f.readlines():
print( line, end='' )
f.close()
except FileNotFoundError as e:
print( '[에러] ', e )
print( '끝' )
- pickle - 리스트나 클래스 등의 입출력을 다룰때 사용
리스트 방식 데이터 쓰기
# ex04.py
import pickle
f = open( './pickle.dat', 'wb' )
colors = [ 'red', 'green', 'black' ]
pickle.dump( colors, f )
print( '저장 완료' )
f.close()
리스트 방식 데이터 읽어오기
# ex05.py
import pickle
f = open( './pickle.dat', 'rb' )
colors = pickle.load( f )
print( colors )
f.close()
클래스 객체 파일에 저장하고 불러오기
# ex06.py
import pickle
class test:
var = None
a = test()
a.var = 'Test'
f = open( 'test', 'wb' )
pickle.dump( a, f )
f.close()
f = open( 'test', 'rb' )
b = pickle.load(f)
f.close()
print( b )
print( b.var )
- 우편번호 검색기 만들기
# zipcodeSearch01.py
f = open( './zipcode_seoul_utf8_type2.csv', 'r', encoding='utf-8' )
for line in f.readlines():
#print( line, end='' )
addresses = line.split( ',' )
#print( addresses[3] )
if addresses[3].startswith( '신사' ) :
print( addresses[0], addresses[1], addresses[2], addresses[3], addresses[4], addresses[5] )
f.close()