log\os\sys\exception

'''
处理器有很多种,文件、屏幕、网络.....
主线:创建一个logger(记录器)
副线:创建文件和控制台(处理器),在创建formatter(格式)加入到前面的文件和控制台处理器中
再将副线加入到主线中执行
logger(filehandler(formatter(%s%s%s))+steramhandler(formatter(%s%s)))
'''
# 记录器创建
loger = logging.getLogger('wei')
loger.setLevel(logging.DEBUG)
print(loger)

# 处理器handler创建2个
fh = logging.FileHandler('test1.log')
ch =logging.StreamHandler()

# 格式创建
formateer = logging.Formatter('%(asctime)s [%(levelname)s] %(filename)s: %(message)s')

# 把格式应用与处理器中
fh.setFormatter(formateer)
ch.setFormatter(formateer)

# 把处理器应用于记录器中
loger.addHandler(fh)
loger.addHandler(ch)

# 过滤器 可用于过滤记录器和处理器
fil = logging.Filter('wei')
# loger.addFilter(fil)
ch.addFilter(fil)

# 打印日志的信息
loger.debug('dgsdg')
loger.info('info')
loger.warning('warning')
loger.error('this error')
loger.critical('this critical ')


'''
通过os调用操作系统的接口,跟操作系统交互
'''
import os
print(os.getcwd()) # 获取当前脚本工作目录
# os.chdir(r'D:\python_project') # 切换当前的目录。类似shell下的cd
print(os.getcwd())
print(os.curdir) # 返回当前目录
print(os.pardir) # 返回上一级目录
print(os.makedirs('a\\b'))
print(os.removedirs('a\\b')) #从内而外的目录方向删除,只能删除递归下的空文件夹,
# print(os.mkdir())
# print(os.rmdir(r'a'))
# os.rename('os.txt','os.py')
print(os.stat('os_1.py')) #其中的文件大小st_size
print(os.stat('..\\OS_module')) #
ss=os.stat('os_1.py')
print(ss.st_atime)
print(type(ss.st_atime))
#os.sep # 根据不同的操作平台,系统默认获取当前平台的分隔符,windows :\ linux :/


print(os.system('dir'))


'''
sys 跟python解释器交互
'''
import sys
asd=22
print(sys.version)
print(sys.maxsize)
# print(sys.path)
print(sys.platform)
print()
def asd2():
print(23)
print(sys.argv) # 返回当前文件列表,cmd下可传入参数执行文件中的模块,
print(sys.argv[0],sys.argv[1])
# if sys .argv[1]=='f1': # cmd下 python sys_1.py f1 即可输出
# asd2()


import time
import random
'''
常用:时间戳,从1970到目前的时间
、字符串格式、时间元组格式、本地时间、等时间

random 随机数,字符串随机、整形随机、小数随机、序列随机、
'''

import datetime
print(time.gmtime(),type(time.gmtime()))
ti=time.gmtime()
print(ti.tm_wday)
print(time.localtime())

print(time.strftime('%Y-%m-%d %H:%M:%S, %A %p'))
print(time.strptime('2020-2-1','%Y-%m-%d'))
print(time.ctime(10))
print(time.time())
print('----------------------')
print(random.getstate())
print(random.random())
print(random.randint(1,5))
print('2222:::',random.choice(range(10)))
print(random.sample((2,3,4,'ad'),2))
random.randrange()

num_str = ''
num_str+='s'
print(num_str)
def num_s():
strs=''
for i in range(5):
strs+=str(random.choice([random.randint(1,3),chr(random.randrange(65,89))]))

print(strs)
num_s()



'''
异常处理:主要知识点分类
1、被动触发异常,系统默认的触发流程
2、主动触发异常(常用于触发写入日志),系统提供的主动触发方法
3、自定义定义触发异常
4、断言assert
'''
import logging

print('-------1被动触发---------')
try:
int('you')
# raise Exception('niyou') # 主动触发
except IndexError as e:
print(e)
except Exception as e: # isinstance(int('you),Exception) 如果判断为真则执行该类异常
'''当包含多个except异常,一般父类异常排在子类后面'''
print(e)
else: # 如果没有异常发生就执行此语句
pass
finally: # 不管是否发生异常都执行,常用于数据库断开连接,IO文件等清理作用
pass

print('-----------2---------------')

class My_exce(Exception): # 自定义异常,继承Exception就好
def __init__(self,va):
self.va = va
def __str__(self):
return self.va

# 创建一个日志记录
loger = logging.getLogger('wei')
loger.setLevel(logging.DEBUG)
cf = logging.FileHandler('test_my_exce.log')
format1 = logging.Formatter('%(asctime)s %(name)s %(levelname)s: %(message)s')
cf.setFormatter(format1)
loger.addHandler(cf)
try:

raise My_exce('niyou') # 主动触发
except My_exce as e: # 使用自定义异常
print(e)
lo_e = str(e)
except Exception as e:
print(e)
finally:
loger.debug(lo_e) # 异常写入日志文件




posted @ 2021-02-23 07:06  樱花满地集  阅读(107)  评论(0)    收藏  举报