让你爱不释手的 Python 模块

logzero
在一个完整的信息系统里面,日志系统是一个非常重要的功能组成部分。它可以记录下系统所产生的所有行为。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。
python 语言也自带了日志模块 logging, 对于熟悉该模块的人使用起来可能是得心应手, 不过对于新手或者只是想简单使用日志基本用法的人来说, 该模块不是那么的友好.为此, 我查询了 python 相关的日志模块, 其中大家推荐比较多的是 logbook 和 logzero, 我查看了下它们的使用文档, 发现 logbook 类似于 logging 模块, 功能比较健全, 不过我没有去详细了解,我被它的文档吓退了. 由于这和我的需求不同, 我只是想简单使用下, 希望模块简约, 各种信息(debug, info, warn, error)颜色鲜明, 能记录下我的"炼丹"信息就好. 幸好, logzero 就是这样的产品, 详细见 logzero 官方文档.
官方文档: logzero: Python logging made easy
logzero 安装
pip install -U logzero
pip 参数说明:
-U, --upgrade Upgrade all specified packages to the newest available version. The handling of dependencies depends on the upgrade-strategy used.
使用自带logger对象
logzero 提供了初始化好的 logger 对象, 使用简单, 简单例子如下
import logging
import logzero
from logzero import logger
import os
logger.debug("hello")
logger.info("info")
logger.warning("warning")
logger.error("error")
# set log level
logzero.loglevel(logging.INFO)
# set log into file
logzero.logfile(os.path.join(os.getcwd(), 'log.txt'), maxBytes=1e6, backupCount=3)
# Log messages
logger.info("This log message goes to the console and the logfile")
# set log formatter
logzero.formatter(logging.Formatter('%(name)s-%(asctime)s-%(levelname)s: %(message)s'))
logger.info("This log message goes to the console and the logfile")
输出如下:

各种信息颜色分明, 看着很舒服是吧, 然而, 这样使用着会比较别扭.
- 首先, 提供的 logger 对象由于是已经初始化好的, 名称不能改变, 日志默认名称为 logzero_default;
- 其次, 已经创建了 logger, 然后使用 logzero 不断改变 logger 的属性, 用着别扭.
好消息是, logzero 提供了可以自己建立 logger 对象的方法, 使用起来也是简单明了.
自己构造logger对象
使用方法如下
import logging
import os
from logzero import setup_logger, LogFormatter
# custom formatter must be inited in setup_logger()
logger = setup_logger(name=__name__,
logfile=os.path.join(os.getcwd(), 'log.txt'),
level=logging.INFO,
formatter=logging.Formatter('[%(name)s-%(asctime)s-%(levelname)s] %(message)s'))
var1 = 'happy'
var2 = 'ending'
# Log some variables
logger.info("var1: %s, var2: %s", var1, var2)
输出:

其中, formatter 默认使用 logzero 的配置, 你也可能像我一样比较喜欢logzero 默认的 formatter 才会使用它, 所以一般不用设置. 上面为演示效果才设置的.
设置时间输出格式
logzero 默认的时间输出格式如下

日期 190303 可能总感觉没有19-03-03舒服. 格式修改方法如下,
import logging
import os
from logzero import setup_logger, LogFormatter
formatter = LogFormatter(datefmt=logging.Formatter.default_time_format)
# custom formatter must be inited in setup_logger()
logger = setup_logger(name=__name__,
logfile=os.path.join(os.getcwd(), 'log.txt'),
level=logging.INFO,
formatter=formatter)
var1 = 'happy'
var2 = 'ending'
# Log some variables
logger.info("var1: %s, var2: %s", var1, var2)
输入如下图

logzero 的基本介绍就到这里了, 详细了解请下载, logzero 模块定义在一个文件中, 小巧易用.
argparse
argparse 官方教程写的太棒了, 照着走一遍, argparse 基本用法搞定.进阶请查看 python argparse模块介绍.
argparse基本用法:
- 当调用parse_args()时,可选参数将由 “ - ” 前缀标识,其余参数将被假定为位置参数;
- argparse将我们给它的选项视为字符串,除非我们另有说明, 如指定 type;
- 如果参数两个值实际上只有两个值有意义,真或假, 使用 action ="store_true";
- 如果 datatype 为 int,可以使用 choices = [0,1,2] 来限制有效的取值范围;
- 设置 action ="count",args 参数传递可以使用 -v,-vv,-vvv 表示整数 1, 2, 3;
- 如果选项互斥, 可以通过如下设置实现;
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
args = parser.parse_args()
prettytable
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_row(["Adelaide",1295, 1158259, 600.5])
x.add_row(["Brisbane",5905, 1857594, 1146.4])
print(x.get_string())
print(x.get_html_string())

retry
正如它的名字,retry是用来实现重试的。很多时候我们都需要重试功能,比如写爬虫的时候,有时候就会出现网络问题导致爬取失败,然后就需要重试了,一般我是这样写的(每隔两秒重试一次,共5次)
from retry import retry
@retry(tries=5, delay=2)
def do_something():
xxx
do_something()
colorama
https://pypi.org/project/colorama/
colorama n 彩色
from colorama import Fore, Back, Style
print(Fore.RED + 'some red text')
print(Back.GREEN + 'and with a green background')
print(Style.DIM + 'and in dim text')
print(Style.RESET_ALL)
print('back to normal now'

Others
glob https://docs.python.org/3/library/glob.html
让你爱不释手的 Python 模块的更多相关文章
- 使用C/C++写Python模块
最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...
- Python模块之configpraser
Python模块之configpraser 一. configpraser简介 用于处理特定格式的文件,其本质还是利用open来操作文件. 配置文件的格式: 使用"[]"内包含 ...
- Python模块之"prettytable"
Python模块之"prettytable" 摘要: Python通过prettytable模块可以将输出内容如表格方式整齐的输出.(对于用Python操作数据库会经常用到) 1. ...
- python 学习第五天,python模块
一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py ...
- windows下安装python模块
如何在windows下安装python模块 1. 官网下载安装包,比如(pip : https://pypi.python.org/pypi/pip#downloads) pip-9.0.1.tar. ...
- 安装第三方Python模块,增加InfoPi的健壮性
这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet 自动检测文本编码 2.lxml 用于解析 ...
- Python基础篇【第5篇】: Python模块基础(一)
模块 简介 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就 ...
- python 模块加载
python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...
- pycharm安装python模块
这个工具真的好好,真的很喜欢,它很方便,很漂亮,各种好 pycharm安装python模块:file-setting-搜索project inte OK
随机推荐
- AI MobileNet
MobileNet,是针对移动和嵌入式设备的一类高效模型,基于流线型(streamlined)架构,使用深度可分离卷积(depthwise separable convolution)来构建轻量级深度 ...
- Gerrit 添加用户
使用ssh添加用户 ssh name@localhost -p 29418 gerrit create-account username --email username@email --full-n ...
- OCR技术浅析-自写篇(2)
本例仅以本人浅薄理解,妄想自制文字识别程序,实际在识别部分未有完善. <?php class readChar{ private $imgSize; //图片尺寸 private $imgGd2 ...
- 646. Maximum Length of Pair Chain(medium)
You are given n pairs of numbers. In every pair, the first number is always smaller than the second ...
- Webdriver获取多个元素
官方通过如下代码获取多个元素: List<WebElement> inputs = driver.findElements(By.xpath("//input")); ...
- mac用BootCamp装windows装完之后驱动问题
刚装完会有一个临时盘里面找到BootCamp文件夹然后运行setup.exe,装完即可.
- kettle表更新/插入更新
更新: 1.1更新表: 目标表: 插入更新: 2.1匹配表: 目标表: 插入/更新转换 目标表
- golang函数
一.函数语法 func 函数名(形参列表) (返回值列表){ ...... return 返回值 } 例如: package main import "fmt" func test ...
- Python——Pycharm基本设置
一.,模板(加入中文UTF-8) #!/usr/bin/env python # -*- coding:utf-8 -*- 设置方法:file->settings->Editor-> ...
- Python——字符格式化
一.分类:%格式符方式,format方式 二.%格式符 1.%s——字符占位,%d——数字占位(十进制) a = ("%(name)s--%(age)d" % {'name':'x ...