模块
本周总结
- json模块补充
json文件里面的中文是字节类型的,得在dump(ensure_ascill= False) 是我怎么给你的你就给我怎么样的存。
-
购物车面条版
-
re模块
字符组
[0-9] [a-z] [A-Z]特殊符号
. 匹配非换行符 \d 匹配数字 \w 匹配数字字母下划线 \s 匹配空白字符 \t 匹配制表符 \D 匹配非数字 \W 匹配非空白符 ^ 匹配开头 [^] 匹配非中括号内的东西量词
* 非贪婪模式0次 贪婪模式匹配无数次 + 非贪婪模式1次 贪婪模式匹配无数次 ? 非贪婪模式0次 贪婪模式匹配1次 {n} 匹配要n个 {n,} 至少n个 {n,m} 至少n个最多m个 -
subcepress
# res = subprocess.Popen( # "ipconfigee", # shell=True, # stdout=subprocess.PIPE, # 建立正确命令的管道 # stderr=subprocess.PIPE, # 建立错误命令的管道 # # ) # res1 = res.stdout.read().decode("gbk") # 获取正确管道里的数据 # res2 = res.stderr.read().decode("gbk") # 获取错误管道里的数据 # print(res1) # print(res2) -
hashlib
md = hashlib.md5() md.update("数据") # 里面的数据必须是二进制 md.hexdigest() # 获取数据加密后的密文 -
第三方模块
第三方模块就是python后面的大佬, python全靠这些库的支持 才会比别的语言强 调包侠 -
pip的使用
下载第三方模块 pip install 模块名 pip install 模块名 == 版本号 pip install 模块名 -i 源 (就是可以在一些国内的仓库里下载) pip -V 查看当前pip版本 pip下载可能遇到的问题 报错里的关键字可能又update 这就是报当前的pip的版本太低了, 你可以复制一下后面的代码然后在终端运行一下就是那引号里面,不能把引号也复制了 报错里的关键字又timeout 超时 可能网不好可以重试一下,也可以换个网在试一下, 如果没有这些关键字,也看不懂到底是什么,那就面向百度去搜 pip安装 模块名 的时候报错 把 报错粘贴上去然后去找找那个简单的能看懂的去试试 -
requests
可以模拟向浏览器发送请求,然后把获取的数据给传过来。res = requests.get(网址) res.text 这是以文本的内容展示 res.content 这打印出来的全是二进制
openpyxl
在03版本前 .xls
在03版本后 .xlsx
操作excel表格的第三方模块
xlwt往表格写入数据、xlrd往表格里写数据
兼容所有版本的excel文件
openpyxl最近机几年比较火的操作excel表格的模块
03版本之前的兼容性比较差
ps:还有很多操作excel表格的模块 是指涵盖了上述的模块
>>>: pandas
openpysl操作
from openpyxl import Workbook
wb = Workbook() # 创建一个表
# 创建一个工作簿
wb1 = wb.create_sheet("学生名单") # 创建一个名为学生名单的工作簿
# 修改工作簿的默认位置
wb2 = wb.create_sheet("哈哈哈名单", 0)
# 修改工作簿的名单
wb2.title = "暗暗名单"
# 填写数据的方式
wb2["F4"] = "哈哈"
# 在第三行 第四列 写入 芜湖
wb2.cell(row=3, column=4, value="芜湖")
wb2.append(["名字", "编号"])
# 保存表格
wb.save("a1.xlsx")
logger
import logging
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_path = 'a3.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
# 只要日志文件的大小到 5M 就新建一个文件然后 在继续存
'backupCount': 5,
# 文件最多存 5 个 够 5 个就覆盖第一个 然后在覆盖最后一个
# 就相当于 监控只能保存 7 天的录像
'encoding': 'utf-8', # 文件的编码格式
},
},
'loggers': {
# logging.getLogger(__name__)拿到的logger配置
'': {
'handlers': ['default', 'console'], # 把这上面定义的
# 两个handler 都加上,即log数据及写入文件又打印到屏幕上
'level': 'DEBUG',
'propagate': True, # 向上(更高level的logger)传递
}, # 当键不存在的情况下(key设为空字符串)默认都会使用该K:V配置
# '购物车记录': {
# 'handlers': ['default','console'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
# 'level': 'WARNING',
# 'propagate': True, # 向上(更高level的logger)传递
# }, # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
},
}
# 加载字典
logging.config.dictConfig(LOGGING_DIC)
lg = logging.getLogger("总信息")
lg.info("信息")
等级
debug 10
info 20
warning 30
error 40
critical 50

浙公网安备 33010602011771号