python-study-17
生活随笔
收集整理的這篇文章主要介紹了
python-study-17
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
復(fù)習(xí)
上節(jié)課復(fù)習(xí)1、什么是模塊模塊是一系列功能的集合體2、為何用模塊拿來(lái)(內(nèi)置或第三方的模塊)主義,提升開(kāi)發(fā)效率自定義模塊可以讓程序的各部分組件重用模塊內(nèi)的功能3、如何用模塊大前提:模塊是被執(zhí)行文件導(dǎo)入使用,模塊的導(dǎo)入必須搞明白誰(shuí)是執(zhí)行文件,誰(shuí)是被導(dǎo)入的模塊import首次import m1導(dǎo)入模塊都發(fā)生三件事:1、先創(chuàng)建一個(gè)模塊的名稱(chēng)空間2、執(zhí)行m1.py,將執(zhí)行過(guò)程中產(chǎn)生的名稱(chēng)都放入模塊的名稱(chēng)空間中3、在當(dāng)前執(zhí)行文件中拿到一個(gè)名字m1,該名字是指向模塊的名稱(chēng)空間使用方法:指名道姓地訪問(wèn)m1名稱(chēng)空間中的名字func,優(yōu)點(diǎn)是不會(huì)與當(dāng)前名稱(chēng)空間中的名字沖突,缺點(diǎn)是每次訪問(wèn)都需要加上前綴m1.funcfrom ... import首次from m1 import func導(dǎo)入模塊都發(fā)生三件事:1、先創(chuàng)建一個(gè)模塊的名稱(chēng)空間2、執(zhí)行m1.py,將執(zhí)行過(guò)程中產(chǎn)生的名稱(chēng)都放入模塊的名稱(chēng)空間中3、在當(dāng)前執(zhí)行文件中直接拿到一個(gè)功能名func,該名字是直接指向模塊名稱(chēng)空間中的某一個(gè)功能的使用方法:直接使用功能即可,優(yōu)點(diǎn)是無(wú)需加任何前綴,缺點(diǎn)是容易與當(dāng)前名稱(chēng)空間中的名字沖突def func():passfunc()4、模塊的搜索路徑內(nèi)存-》內(nèi)置模塊-》sys.path5、軟件開(kāi)發(fā)的目錄規(guī)范今日內(nèi)容1、模塊的另外一種形式->包(****)2、常用模塊logging日志模塊時(shí)間模塊random模塊json與pickle模塊 View Code?
包
1、什么是包包是模塊的一種形式,包的本質(zhì)就是一個(gè)含有__init__.py文件的文件夾2、為什么要有包3、如何用包導(dǎo)入包就是在導(dǎo)包下的__init__.pyimport ...from ... import...注意的問(wèn)題:1、包內(nèi)所有的文件都是被導(dǎo)入使用的,而不是被直接運(yùn)行的2、包內(nèi)部模塊之間的導(dǎo)入可以使用絕對(duì)導(dǎo)入(以包的根目錄為基準(zhǔn))與相對(duì)導(dǎo)入(以當(dāng)前被導(dǎo)入的模塊所在的目錄為基準(zhǔn))推薦使用相對(duì)導(dǎo)入3、當(dāng)文件是執(zhí)行文件時(shí),無(wú)法在該文件內(nèi)用相對(duì)導(dǎo)入的語(yǔ)法只有在文件時(shí)被當(dāng)作模塊導(dǎo)入時(shí),該文件內(nèi)才能使用相對(duì)導(dǎo)入的語(yǔ)法4、凡是在導(dǎo)入時(shí)帶點(diǎn)的,點(diǎn)的左邊都必須是一個(gè)包import aaa.bbb.m3.f3 # 錯(cuò)誤 View Code?
日志模塊
# import logging # 進(jìn)行基本的日志配置 # logging.basicConfig(filename='access.log', # format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', # datefmt='%Y-%m-%d %H:%M:%S %p', # level=10, # # stream=True # )# 日志級(jí)別遵循原則:自下而上進(jìn)行匹配 #debug-》info-》warning-》error-》critical # logging.debug('調(diào)試信息') #10 # logging.info('正常信息') #20 # logging.warning('不好啦著火啦') #30 # logging.error('報(bào)錯(cuò)信息') #40 # logging.critical('嚴(yán)重錯(cuò)誤信息') #50# 問(wèn)題: #1、沒(méi)有指定日志級(jí)別 #2、沒(méi)有指定日志格式 #3、只能往屏幕打印,沒(méi)有寫(xiě)入文件# 新問(wèn)題 #1、不能指定字符串編碼 #2、只能往文件中打印import logging # logging模塊包含四種角色:logger,filter,formatter,handler #1、logger:負(fù)責(zé)產(chǎn)生日志信息 logger1=logging.getLogger('交易日志') # logger2=logging.getLogger('用戶相關(guān)')#2、filter:負(fù)責(zé)篩選日志#3、formatter:控制日志輸出格式 formatter1=logging.Formatter(fmt='%(asctime)s:%(name)s:%(levelname)s:%(message)s',datefmt='%Y-%m-%d %X' ) formatter2=logging.Formatter(fmt='%(asctime)s:%(message)s',datefmt='%Y-%m-%d %X' )#4、handler:負(fù)責(zé)日志輸出的目標(biāo) h1=logging.FileHandler(filename='a1.log',encoding='utf-8') h2=logging.FileHandler(filename='a2.log',encoding='utf-8') sm=logging.StreamHandler()#5、綁定logger對(duì)象與handler對(duì)象 logger1.addHandler(h1) logger1.addHandler(h2) logger1.addHandler(sm)#6、綁定handler對(duì)象與formatter對(duì)象 h1.setFormatter(formatter1) h2.setFormatter(formatter1) sm.setFormatter(formatter2)#7、設(shè)置日志級(jí)別:可以在兩個(gè)關(guān)卡進(jìn)行設(shè)置logger與handler logger1.setLevel(10) h1.setLevel(10) h2.setLevel(10) sm.setLevel(10)logger1.info('Egon借給李杰100W') View Code """ logging配置 """ import os import logging.config# 定義三種日志輸出格式 開(kāi)始 standard_format = '%(asctime)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s'simple_format = '%(asctime)s - %(levelname)s - %(message)s'id_simple_format = '[%(asctime)s] %(message)s'# log文件的全路徑 logfile1_path = r'D:\SH_fullstack_s2\day17\a1.log' logfile2_path = r'D:\SH_fullstack_s2\day17\a2.log'# log配置字典 LOGGING_DIC = {'version': 1,'disable_existing_loggers': False,'formatters': {'formatter1': {'format': standard_format},'formatter2': {'format': simple_format},},'filters': {},'handlers': {#打印到終端的日志'sm': {'level': 'DEBUG','class': 'logging.StreamHandler', # 打印到屏幕'formatter': 'formatter2'},#打印到文件的日志,收集info及以上的日志'h1': {'level': 'DEBUG','class': 'logging.FileHandler', # 保存到文件'formatter': 'formatter1','filename': logfile1_path, # 日志文件'encoding': 'utf-8', # 日志文件的編碼,再也不用擔(dān)心中文log亂碼了 },'h2': {'level': 'DEBUG','class': 'logging.FileHandler', # 保存到文件'formatter': 'formatter1','filename': logfile2_path, # 日志文件'encoding': 'utf-8', # 日志文件的編碼,再也不用擔(dān)心中文log亂碼了 },},'loggers': {#logging.getLogger(__name__)拿到的logger配置'logger1': {'handlers': ['h1','h2','sm'],'level': 'DEBUG','propagate': False, # 向上(更高level的logger)傳遞 },}, } logging的用法?
轉(zhuǎn)載于:https://www.cnblogs.com/xujinjin18/p/9198956.html
總結(jié)
以上是生活随笔為你收集整理的python-study-17的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# 之 Math取整
- 下一篇: Win7 x64 PL/SQL 连接 O