码迷,mamicode.com
首页 > 其他好文 > 详细

常用模块 二

时间:2019-07-20 00:27:50      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:file_path   bsp   col   format   icc   常用   use   日志输出   ica   

  一、包

   1.1 研究模块与包。还可以站在另外角度分析不同的问题

    1.模块的开发者

    2.模块的使用者

    一系列模块文件的结合体,改文件内部通常会有一个__init__.py

    包的本质还是一个还是一个模块

       1.2  from dir.dir1 import p  

    首次导入包:
     先产生一个执行文件的名称空间。
     1.创建包下面的__init__.py 文件的名称空间
     2.执行包下面的————init__.py文件中的代码 将产生的名字放入__init__.py的名称空间中
     3.在执行的文件中拿到一个执行包下面的__init__.py文件的名称空间的名字

   1.3 在导入语句中. 号左边肯定是一个包(文件夹)
    
   1.4 为什么要创建包(文件夹会执行创————init__.py文件)
      
 当模块的功能作为包的设计者来说
    
    1、当模块的功能特别多的时候,应该分文件管理,结构清晰
    
    2、每个模块之间为了避免后期模块改名的问题,你可以使用相对导入点点语法(包的文件都应该是被导入的模块)
    
    
站在包的开发者 如果使用的是绝对路径来管理自己的模块,那么它只需要永远以包的路径为依据导入模块

站在使用者的角度 必须将包的所在的那个文件接路径添加到system path 中

   1.5  python2 和 python3 在包的区别

    python2 中要导入包必须要有__init__.py文件

    python3 中如果要导包 包下可以没有__init__.py 文件 也不会报错

    注意:当你在删除程序不要的文件,千万不要随意删除__init__.py文件 即使为空

  二、logging模块

 

# 函数式简单配置
"""
import logging
logging.debug(‘debug message日志‘)  #等级10
logging.info(‘info message日志‘)  #  等级20
logging.warning(‘warning message‘)  # 等级30
logging.error(‘error message‘)  # 等40
logging.critical(‘critical message‘)  # 等级50
"""
# 灵活配置日志级别、日志格式、输出位置
"""
import logging  # d导入logging 模块
file_handler = logging.FileHandler(filename=‘x1.log‘, mode=‘a‘, encoding=‘utf-8‘,)
logging.basicConfig(
    format=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s‘,
    datefmt=‘%Y-%m-%d %H:%M:%S %p‘,
    handlers=[file_handler,],
    level=logging.ERROR
)

logging.error(‘你好‘)

"""
# 1.日志分为五个等级: 类似于地震的强度



"""

import logging  模块
logging.debug(‘debug message日志‘)  #等级10
1.debug 日志:为第一级可以人为的设定等级数>>>10

logging.info(‘info message日志‘)  #  等级20
2.info 日志:为第二级 设置为20  
logging.warning(‘warning message‘)  # 等级30

3.warning 日志:为第三级 设置为30 
logging.error(‘error message‘)  # 等40 

4.error 日志:40
logging.critical(‘critical message‘)  # 等级50
5.critical 日志:50  记录日志是可以设置的内容的 你设置在那一层就会从那一层开始上记录

"""

# 2. 四个对象:
"""
1.logger 对象>>>产生日志的
2.filter 对象>>>过滤日志
3.handler 对象>>>控制台指定文件输入的位置:输出的位置是文件还是中端。
4.formmater 对象>>> 按照什么格式进行输出的:
"""


# 一、写日志
# 1.logger对象:负责产生日志:
import logging
logger = logging.getLogger(转账明细:)

# 2.2.filter 对象>>>过滤日志 了解

# 3.handler(输出位置文件/终端)

handler1 = logging.FileHandler(a1.log,encoding=utf-8)  # 控制台指定的输出的位置:文件a1
handler2 = logging.FileHandler(a2.log,encoding=utf-8)  # 控制台指定的输出的位置:文件a2
handler3 = logging.StreamHandler()  # 控制台指定的输出的位置:是终端不需要传参数 流的形式

# 4.formmater 对象:规定日志内容的格式的格式

fm1 = logging.Formatter(
    fmt=%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s,
    datefmt=%Y-%m-%d %H:%M:%S %p)

fm2 = logging.Formatter(
    fmt=%(asctime)s - %(name)s:  %(message)s,
    datefmt=%Y-%m-%d)

# 5.给logger对象绑定(添加)handler 对象
logger.addHandler(handler1)  #
logger.addHandler(handler2)  #
logger.addHandler(handler3)  #

# 6.给handler 绑定formmater对象、
handler1.setFormatter(fm1)
handler2.setFormatter(fm2)
handler3.setFormatter(fm1)

# 7.设置日志等级
logger.setLevel(10)

# 8.记录日志:起始
logger.info(手撸日志 累死了啊)
 

   logging 日志配置字典

 

  三、logging配置字典

import os
import logging.config

# 定义三种日志输出格式 开始

standard_format = [%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]                   [%(levelname)s][%(message)s] #其中name为getlogger指定的名字

simple_format = [%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s



# 定义日志输出格式 结束
"""
下面的两个变量对应的值 需要你手动修改
"""
logfile_dir = os.path.dirname(__file__)  # log文件的目录
logfile_name = a3.log  # log文件名

# 如果不存在定义的日志目录就创建一个
if not os.path.isdir(logfile_dir):
    os.mkdir(logfile_dir)

# log文件的全路径
logfile_path = os.path.join(logfile_dir, logfile_name)
# log配置字典
LOGGING_DIC = {
    version: 1,
    disable_existing_loggers: False,
    formatters: {
        standard: {
            format: standard_format
        },
        simple: {
            format: simple_format
        },
    },
    filters: {},  # 过滤日志
    handlers: {
        #打印到终端的日志
        console: {
            level: DEBUG,
            class: logging.StreamHandler,  # 打印到屏幕
            formatter: simple
        },
        #打印到文件的日志,收集info及以上的日志
        default: {
            level: DEBUG,
            class: logging.handlers.RotatingFileHandler,  # 保存到文件
            formatter: standard,
            filename: logfile_path,  # 日志文件
            maxBytes: 1024*1024*5,  # 日志大小 5M
            backupCount: 5,
            encoding: utf-8,  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    loggers: {
        #logging.getLogger(__name__)拿到的logger配置
        ‘‘: {
            handlers: [default, console],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            level: DEBUG,
            propagate: True,  # 向上(更高level的logger)传递
        },  # 当键不存在的情况下 默认都会使用该k:v配置
    },
}

 

 

# 日志调用 common

# 使用日志字典配置 后期将用函数封装 导入common 生成logger对象
logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置
logger1 = logging.getLogger(asajdjdskaj)
logger1.debug(好好的 不要浮躁 努力就有收获)

 

 

 

  四、hasblib模块

  import hashlib

  # 生成个md5对象

  md = hashlib()
  # 加盐

  md.update(’都可以加的内容‘)

  md.update(‘再加点盐‘)

  md.hexdigest()

  print(md.hexdigest())

  

import hashlib
import hashlib

def get_md5(data):
md = hashlib.md5()

md.update(‘都可以加的内容‘.encode(‘utf-8‘))

md.update(data.encode(‘utf-8‘))
return md.hexdigest()

# 函数调用:

password = input(‘输入密码:‘).strip()

res1 = get_md5(password)

print(res1)

 

  五、openpyxl模块

# openpyxl 比较火的操作excel表格的模块
"""
03版本之前 excel文件的后缀名 叫xls
03版本之后 excel文件的后缀名 叫xlsx

xlwd  写excel
xlrt  读excel

xlwd和xlrt既支持03版本之前的excel文件也支持03版本之后的excel文件
openpyxl 只支持03版本之后的  xlsx
"""

  

# 1.写excel 表格
from openpyxl import Workbook
首先生成一个工作薄
wb = Workbook() 
2.创建一个表单页 后面可以通过数字控制位置
wb1 = wb.create_sheet(表格一,0)  # 创建一个表单页 后面可以通过数字控制位置
wb2 = wb.create_sheet(表格二,1)  # 创建一个表单页 后面可以通过数字控制位置

  3. 更改表单页的名字

wb1.title = login日志  # 更改表单页的名字
wb2.title = 流水日志  # 可以通过wb2.title更改表单页名字

  4..可以指定按表格填写内容

# wb1 [‘A3‘] = 1000
# wb1 [‘A4‘] = 999
# wb1 [‘A5‘] = ‘=sum(A3:A4)‘  #求和

# 可以指定的行和列中写
# wb1.cell(row=6,column=3,value=9999)  #

  5.创建一个表头

# 4.创建一个表头
# wb1.append([‘username‘,‘age‘,‘hobby‘])
# # 给表格写点内容
# wb1.append([‘coco‘,18,‘dancing‘])
# wb1.append([‘yy‘,26,‘we‘])
# wb1.append([‘jason‘,19,‘开车‘])
# wb1.append([‘tank‘,18,‘生蚝‘])
#
最重要的是保存: 保存新建的excel 文件 wb.save(‘today1.xlsx‘)  # 先创建一个表格文件

 

# 1.写 from openpyxl import wordbook

wd = workbook()   # 生成一个工作薄对象

1.出创建表单页:

  wb1 = wb.create_sheet(参数一是表单页名‘,0是可以控制位置)

2.改 表单页的名字

wb1.title = ‘lgoin 日志’

#2.wb.save()

3.写内容:操作生成的表单页对象 指定位置填写

 

4.创建表头

# 操作表单页对象wb1.append([]) 写的时候一一对应

二、读.读取表格内容

from openpyxl import load_workbook  # 导入读取
wb = load_workbook(‘today1.xlsx‘,read_only=True,data_only=True)
print(wb.sheetnames)  # 拿到表里面的名子
# [‘login日志‘, ‘流水日志‘, ‘Sheet‘]
print(wb[login日志][C3].value)

res = wb[login日志]
print(res)
w = res.rows
for i in res.rows:
    print(i)  #  <ReadOnlyCell ‘login日志‘.C5>
    for j in i:
        print(j.value)
    print()
        # username
        # age
        # hobby

         # coco
         # 18
         # dancing

        # tank
        # 18
        # 生蚝
通过代码产生的excel表格必须经过人为操作之后才能读取出函数计算出来的结果值
 

常用模块 二

标签:file_path   bsp   col   format   icc   常用   use   日志输出   ica   

原文地址:https://www.cnblogs.com/mofujin/p/11215642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!