예상치 못한 많은 일(예외)들이 생긴다.
예외가 발생할 경우 후속 조치 등 대처가 필요
for i in range(10):
try:
print(10 / i)
except ZeroDivisionError:
print("Not divided by 0")
Not divided by 0
10.0
5.0
3.3333333333333335
2.5
2.0
1.6666666666666667
1.4285714285714286
1.25
1.1111111111111112
for i in range(10):
try:
print(10 / i)
except ZeroDivisionError as e:
print(e)
print("Not divided by 0")
division by zero
Not divided by 0
10.0
5.0
3.3333333333333335
2.5
2.0
1.6666666666666667
1.4285714285714286
1.25
1.1111111111111112
for i in range(1, 10):
try:
result = 10 / i
except ZeroDivisionError:
print("Not divided by 0")
else:
print(10 / i)
10.0
5.0
3.3333333333333335
2.5
2.0
1.6666666666666667
1.4285714285714286
1.25
1.1111111111111112
try:
for i in range(0, 10):
result = 10 // i
print(result)
except ZeroDivisionError:
print("Not divided by 0")
finally:
print("종료되었습니다.")
Not divided by 0
종료되었습니다.
while True:
value = input("변환할 정수 값을 입력해주세요")
for digit in value:
if digit not in "0123456789":
raise ValueError("숫자값을 입력하지 않으셨습니다")
print("정수값으로 변환된 숫자 -", int(value))
zz
ValueError: 숫자값을 입력하지 않으셨습니다
def get_binary_nmubmer(decimal_number):
assert isinstance(decimal_number, int)
return bin(decimal_number)
print(get_binary_nmubmer(10))
# 0b1010
Directory
- Folder 또는 Directory로 불린다.
- File과 다른 Directory를 포함할 수 있다.
File
- 컴퓨터에서 정보를 저장하는 논리적인 단위 (wikipedia)
- 파일은 파일명과 확장자로 식별됨 (ex. hello.py)
- 실행, 쓰기, 읽기 등을 할 수 있다.
File의 종류
- 기본적인 파일 종류로 Text File과 Binary File로 나눈다.
- 컴퓨터는 Text File을 처리하기 위해 Binary File로 변환시킴(ex. pyc file)
- 모든 Text 파일도 실제는 Binary File, ASCII/Unicode String 집합으로 저장되어 사람이 읽을 수 있다.
# 대상 파일이 같은 폴더에 있을 경우
f = open("i_have_a_dream.txt", "r")
contents = f.read()
print(contents)
f.close()
with open("i_have_a_dream.txt", "r") as my_file:
contents = my_file.read()
print(type(contents), contents)
with open("i_have_a_dream.txt", "r") as my_file:
content_list = my_file.readlines() # 파일 전체를 list로 Return
print(type(content_list)) # Type 확인
print(content_list) # List 값 출력
with open("i_have_a_dream.txt", "r") as my_file:
i = 0
while True:
line = my_file.readline()
if not line:
break
print(str(i) + " === " + line.replace("\n", "")) # 한 줄씩 값 출력
i = i + 1
with open("i_have_a_dream.txt", "r") as my_file:
contents = my_file.read()
word_list = contents.split(" ") # 빈칸 기준으로 단어를 분리 List
line_list = contents.split("\n") # 한 줄씩 분리하여 List
print("Total Number of Characters:", len(contents))
print("Total Number of Words:", len(word_list))
print("Total Number of Lines:", len(line_list))
f = open("count_log.txt", 'W', encoding="utf8")
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
with open("count_log.txt", 'a', encoding="utf8") as f:
for i in range(1, 11):
data = "%d번쨰 줄입니다.\n" % i
f.write(data)
import os
os.mkdir("log")
if not os.path.isdir("log"):
os.mkdir("log")
import pathlib
cwd = pathlib.Path.cwd()
print(cwd) # WindowsPath('D:/workspace')
print(cwd.parent) # WindowsPath('D:/')
print(list(cwd.parents)) # [WindowsPath('D:/')]
print(list(cwd.glob("*"))) # [WindowsPath('D:/workspace/ai-pnpp'), WindowsPath('D:/workspace/cs50_auto_grader'), WindowsPath('D:/workspace/data-academy'), WindowsPath('D:/workspace/DSME-AI-Smart- Yard'), WindowsPath('D:/workspace/introduction_to_python_TEAMLAB_MOOC'),
import os
if not os.path.isdir("log"):
os.mkdir("log")
if not os.path.exists("log/count_log.txt"):
f = open("log/count_log.txt", 'w', encoding="utf8")
f.write("기록이 시작됩니다\n")
f.close()
with open("log/count_log.txt", 'a', encoding="utf8") as f:
import random, datetime
for i in range(1, 11):
stamp = str(datetime.datetime.now())
value = random.random() * 1000000
log_line = stamp + "\t" + str(value) + "값이 생성되었습니다" + "\n"
f.write(log_line)
import pickle
f = open("list.pickle", "wb")
test = [1, 2, 3, 4, 5]
pickle.dump(test, f)
f.close()
f = open("list.pickle", "rb")
test_pickle = pickle.load(f)
print(test_pickle)
f.close()
import pickle
class Multiply(object):
def __init__(self, multiplier):
self.multiplier = multiplier
def multiply(self, number):
return number * self.multiplier
muliply = Multiply(5)
muliply.multiply(10)
f = open("multiply_object.pickle", "wb")
pickle.dump(muliply, f)
f.close()
f = open("multiply_object.pickle", "rb")
multiply_pickle = pickle.load(f)
multiply_pickle.multiply(5)
import logging
logging.debug("틀렸습니다")
logging.info("확인하세요")
logging.warning("조심하세요")
logging.error("에러발생")
logging.critical("치명적인 상황")
import logging
logger = logging.getLogger("main") # Logger 선언
stream_hander = logging.StreamHandler() # Logger의 Output 방법 선언
logger.addHandler(stream_hander) # Logger의 Output 등록
logger.setLevel(logging.DEBUG)
logging.debug("틀렸습니다")
logging.info("확인하세요")
logging.warning("조심하세요")
logging.error("에러발생")
logging.critical("치명적인 상황")
logger.setLevel(logging.CRITICAL)
logging.debug("틀렸습니다")
logging.info("확인하세요")
logging.warning("조심하세요")
logging.error("에러발생")
logging.critical("치명적인 상황")
- Config File
Section : "[]"
속성 : "Key : Value"
import configparser
config = configparser.ConfigParser()
config.sections()
config.read('example.cfg"')
config.sections()
for key in config['SectionOne']:
print(key)
config['SectionOne']['status']
import argparse
parser = argparse.ArgumentParser(description='Sum two integers.')
# parser.add_argument('짧은 이름', "긴 이름", dest="표시명", help="Help 설명", type=Argument Type
parser.add_argument('-a', "--a_value", dest="A_value", help="A integers", type=int)
parser.add_argument('-b', "--b_value", dest="B_value", help="B integers", type=int)
args = parser,parse_args()
print(args)
print(args.a)
print(args.b)
print(args.a + args.b)
def main():
parser = argparse.ArgumentParser(description='PyTorch MNIST Example')
parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default:64)')
parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing(default: 1000)')
parser.add_argument('--epochs', type=int, default=10, metavar='N', help='number of epochs to train (default: 10)')
parser.add_argument('--lr', type=float, default=0.01, metavar='LR', help='learning rate (default: 0.01)')
parser.add_argument('--momentum', type=float, default=0.5, metavar='M', help='SGD momentum (default: 0.5)')
parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training')
parser.add_argument('--seed', type=int, default=1, metavar='S', help="random seed (default: 1)")
parser.add_argument('--save-model', action='store_true', default=False, help='For Saving the current Model')
args = parser.parse_args()
if __name__ == '__main__':
main()
formatter = logging.Formatter('%(asctime)s %(levelname)s %(process)d %(message)s')
logging.config.fileConfig('logging.conf')
logger = logging.getLogger()
import csv
logger.info('Open file {0}'.format("customers.csv"))
try:
with open("customers.csv", "r") as customer_data:
customer_reader = csv.reader(customer_data, delimiter=',', quotechar='"')
for customer in customer_reader:
if customer[10].upper() == "USA": # customer Data의 Offset 10번째 값
logger.info('ID {0} added'.format(customer[0]))
customer_USA_only_list.append(customer) # 즉 country Field가 "USA"인 것만
except FileNotFoundError as e:
logger.error('File NOT found {0}'.format(e))