프로그래밍 시작하기 : 파이썬 입문(Inflearn Original)
8. 파이썬 기본 함수
8-1. Built-in Functions : 내장 함수는 굳이 안외우셔도 되요.
# 파이썬 내장함수(Built in)
# 자주 사용하는 함수 위주로 실습
# 사용하다보면 자연스럽게 숙달
# str(), int(), tuple() -> 형변환
# 절대값 : abs()
# al, any : iterable 요소 검사(참, 거짓)
print(all([1, 2, 3])) # and
print(any([1, 2, 0])) # or
# chr : 아스키 -> 문자, ord : 문자-> 아스키
print(chr(67))
print(ord('C'))
# enumerate : 인덱스 + Iterable 객체 생성
for i, name in enumerate(['abc', 'bcd', 'efg']):
print(i, name)
# filter : 반복가능한 객체 요소를 지정한 함수 조건에 맞는 값 추출
def conv_pos(x):
return abs(x) > 2
print(list(filter(conv_pos, [1, -3, 2, 0, -5, 6])))
# 람다식
print(list(filter(lambda x : abs(x) > 2, [1, -3, 2, 0, -5, 6])))
# id : 객체의 주소값(레퍼런스) 반환
print(id(int(5)))
print(id(4))
# len
print(len('abcdef'))
print(len([1, 2, 4, 5, 6, 5]))
# max, min
print(max([1, 2, 3]))
print(max('python study'))
# map : 반복가능한 객체 ㅇ소를 지정한 함수 실행 후 추출
def conv_abs(x):
return abs(x)
print(list(map(conv_abs, [1, -3, 2, 0, -5, 6])))
# pow : 제곱값 반환
print(pow(2, 10))
#range : 반복 가능한 객체Iterable반환
print(range(1, 10, 2))
print(list(range(1, 10,2)))
# round :반올림
print(round(117.247, -2))
print(round(4231.232))
# sorted : 반복가능한 객체Iterable
print(sorted([2,5,2,1,4]))
# sum
print(sum([4,2,3,1]))
print(sum(range(1, 101)))
# type 자료형 확인
#zip : 반복가능한 객체의 요소를 묶어서 반환
print(list(zip([10, 20, 30], [40, 50, 60])))
print(list(zip(['a', 'b', 'c'], [1, 2])))
zip 함수는 tuple로 반환한다.
8-2. External Functions : 외장 함수에는 편리한 것들이 많아요.
# 실제 프로그램 개발 중 자주 사용
# sys, pickle, shutill, tempfile, time, random
# 예제1
import sys
print(sys.argv)
# 예제 2 (깡제 종료)
# sys.exit()
# 예제 3 (파이썬 패키지 위치)
print(sys.path)
# 예제 3 (파이썬 패키지 위치)
print(sys.path)
# pickle : 객체 파일 쓰기
import pickle
# 예제 4(쓰기)
f = open("test.obj", 'wb')
obj = {1: 'python', 2:'study', 3:'basic'}
pickle.dump(obj, f) # 쓰기
f.close()
# 읽기
f= open('test.obj', 'rb')
data = pickle.load(f)
print(data, type(data))
f.close()
pickle은 객체를 읽고 쓸 때 사용.
# os : 환경 변수, 디렉토리(파일) 처리 관련, 운영체제 작업 관련
# mkdir, rmdir(비어 있으면 삭제), rename
import os
print(os.environ)
print(os.environ["USERNAME"])
print(os.environ["ATOM_HOME"])
# 현재 경로
print(os.getcwd())
import time
# 시간
print(time.time())
print(time.localtime(time.time())) # time을 형태 변환할 수 있다.
print(time.ctime())
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
print()
# 시간 간격 발생
for i in range(5):
print(i)
time.sleep(2)
# random : 난수 리턴
import random
print(random.random())
print(random.randint(1, 45)) # 1~45
print(random.randrange(1, 45)) # 1~44
# 섞기
d = [1, 2, 3, 4, 5]
random.shuffle(d)
print(d)
c = random.choice(d)
print(c)
# webbrowser : 본인 OS의 웹 브라우저 실행
import webbrowser
webbrowser.open("http://google.com")
webbrowser.open_new("http://google.com")
9. 파이썬 파일 쓰기
9-1. 결과를 파일에 쓸 수 있어야 해요.
# 파일 읽기 및 쓰기
# 읽기 모드 : r, 쓰기 모드 w, 추가 모드 a, 텍스트 모드 t, 바이너리 모드 b
# 파일 읽기 (Read)
f = open('./it_news.txt', 'r', encoding='UTF-8')
# 맨 뒤의 인수는 인코딩 방법. euc-kr 등.
# 속성 확인
print(dir(f))
print(f.encoding)
print(f.name)
print(f.mode)
cts = f.read()
print(cts)
f.close()
with open('./it_news.txt', 'r', encoding='UTF-8') as f:
c = f.read()
print(c)
print(iter(c))
print(list(c))
# close를 호출하지 않아도 내부적으로 닫힌다.
print()
# read() : 전체 읽기, read(10)
with open('./it_news.txt', 'r', encoding='UTF-8') as f:
c = f.read(10)
print(c)
c = f.read(10)
print(c)
f.seek(0, 0) # 초기로 감.
c = f.read(20)
print(c)
# 커서가 있어 어디까지 읽었는지 내부적으로 기억하고 있다.
print()
line = f.readline() 으로 한 줄씩 읽어올 수 있다.
readlines : 전체를 읽은 후 라인 리스트로 저장.
with open('./it_news.txt', 'r', encoding='UTF-8' as f:
cts = f.getlines()
print(cts)
print()
for c in cts:
print(c, end='')
print()
# 파일 쓰기(write)
with open('./contents1.txt', 'w') as f:
f.write("I love python\n")
# w 처음부터 쓰기
# a 이어쓰기
# wrtielines: 리스트로 되어 있는 것을 파일로 쓸 수 있음.
with open('./contents1.txt', 'w') as f:
list = ['Orange\n', 'Apple\n', 'Banana\n']
f.writelines(list)
with open('./contents1.txt', 'w') as f:
print("Write", file=f)
이렇게 하면 print로 file에 쓸 수 있다.
9-2. CSV 파일은 생소하지 않으시죠?
# CSV 파일 읽기 및 쓰기
# CSV : MEME - text/csv
import csv
with open('./resource/test1.csv', 'r') as f:
reader = csv.reader(f)
#객체 확인
print(reader)
#타입 확인
print(type(reader)) # _csv.reader
print(dir(reader)) # 속성
print()
next(reader) # Header skip 하는 메소드
for c in reader:
# print(c)
# 타입 확인(리스트)
# print(type(C))
# list to str
print(' '.join(c))
with open('./resource/test2.csv', 'r') as f:
reader = csv.reader(f, delimiter='|') # 내가 원하는 구분 기호로 가져올 수 있음.
next(reader) # Header skip 하는 메소드
for c in reader:
print(c)
with open('./resource/test2.csv', 'r') as f:
reader = csv.DictReader(f)
print(reader)
print(type(reader))
print(dir(reader))
print()
for c in reader:
for k, v in c.items():
print(k, v)
print('-------------')
import csv
w = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
with open('./write1.csv', 'w', encoding='utf-8') as f:
print(dir(csv))
wt = csv.writer(f)
#dir 확인
print(dir(wt))
print(type(wt))
for v in w:
wt.writerow(v)
import csv
w = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
with open('./write1.csv', 'w', encoding='utf-8') as f:
fields = ['One', 'Two', 'Three']
wt = csv.DictWriter(f, fieldnames = fields)
wt.writeheader()
for v in w:
wt.writerow({'One' : v[0], 'Two': v[1], 'Three': v[2]})
'개발 공부 > Python' 카테고리의 다른 글
프로그래밍 시작하기 : 파이썬 입문 10. 최종 프로젝트 (0) | 2020.07.05 |
---|---|
프로그래밍 시작하기 : 파이썬 입문 6. 클래스, 모듈, 패키지~7.예약처리 (0) | 2020.07.05 |
프로그래밍 시작하기 : 파이썬 입문 4.흐름 제어~5.파이썬 함수 및 입력 (1) | 2020.07.05 |
프로그래밍 시작하기 : 파이썬 입문 2.완전 기초~3.기초 자료형 (0) | 2020.07.05 |
(new) 프로그래밍 시작하기 : 파이썬 입문 1. 파이썬 시작해봐요. (1) | 2020.07.03 |