python:常用模块二
1,hashlib模块---摘要算法md5 =<span style="color: #000000"> hashlib.md5()
md5.update(<span style="color: #800000">'<span style="color: #800000">how to use md5 in python hashlib?<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">print<span style="color: #000000"> md5.hexdigest() 计算结果如下: 如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的: md5 = md5.hexdigest()
MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。另一种常见的摘要算法是SHA1,调用SHA1和调用MD5完全类似: sha1 =<span style="color: #000000"> hashlib.sha1()
sha1.update(<span style="color: #800000">'<span style="color: #800000">how to use sha1 in <span style="color: #800000">'<span style="color: #000000">) sha1.update(<span style="color: #800000">'<span style="color: #800000">python hashlib?<span style="color: #800000">'<span style="color: #000000">) <span style="color: #0000ff">print sha1.hexdigest() SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法越慢,而且摘要长度更长。 2,configparser模块该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)。 创建文件来看一个好多软件的常见文档格式如下: = 45== 9=[bitbucket.org]
User =<span style="color: #000000"> hg [topsecret.server.com] ForwardX11 = no 如果想用python生成一个这样的文档怎么做呢? =] = {: : : :config[<span style="color: #800000">'<span style="color: #800000">bitbucket.org<span style="color: #800000">'] = {<span style="color: #800000">'<span style="color: #800000">User<span style="color: #800000">':<span style="color: #800000">'<span style="color: #800000">hg<span style="color: #800000">'<span style="color: #000000">}
config[ <span style="color: #800000">'<span style="color: #800000">topsecret.server.com<span style="color: #800000">'] = {<span style="color: #800000">'<span style="color: #800000">Host Port<span style="color: #800000">':<span style="color: #800000">'<span style="color: #800000">50022<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">ForwardX11<span style="color: #800000">':<span style="color: #800000">'<span style="color: #800000">no<span style="color: #800000">'<span style="color: #000000">}with open( <span style="color: #800000">'<span style="color: #800000">example.ini<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">w<span style="color: #800000">'<span style="color: #000000">) as configfile:config.write(configfile) 查找文件config =<span style="color: #000000"> configparser.ConfigParser()
<span style="color: #008000">#<span style="color: #008000">---------------------------查找文件内容,基于字典的形式
<span style="color: #0000ff">print(config.sections()) <span style="color: #008000">#<span style="color: #008000"> [] <span style="color: #0000ff">print(config.sections()) <span style="color: #008000">#<span style="color: #008000"> ['bitbucket.org','topsecret.server.com'] <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">bytebong.com<span style="color: #800000">' <span style="color: #0000ff">in config) <span style="color: #008000">#<span style="color: #008000"> False <span style="color: #0000ff">print(config[<span style="color: #800000">'<span style="color: #800000">bitbucket.org<span style="color: #800000">'][<span style="color: #800000">"<span style="color: #800000">user<span style="color: #800000">"]) <span style="color: #008000">#<span style="color: #008000"> hg <span style="color: #0000ff">print(config[<span style="color: #800000">'<span style="color: #800000">DEFAULT<span style="color: #800000">'][<span style="color: #800000">'<span style="color: #800000">Compression<span style="color: #800000">']) <span style="color: #008000">#<span style="color: #008000">yes <span style="color: #0000ff">print(config[<span style="color: #800000">'<span style="color: #800000">topsecret.server.com<span style="color: #800000">'][<span style="color: #800000">'<span style="color: #800000">ForwardX11<span style="color: #800000">']) <span style="color: #008000">#<span style="color: #008000">no <span style="color: #0000ff">print(config[<span style="color: #800000">'<span style="color: #800000">bitbucket.org<span style="color: #800000">']) <span style="color: #008000">#<span style="color: #008000"> <span style="color: #0000ff">for key <span style="color: #0000ff">in config[<span style="color: #800000">'<span style="color: #800000">bitbucket.org<span style="color: #800000">']: <span style="color: #008000">#<span style="color: #008000"> 注意,有default会默认default的键 <span style="color: #0000ff">print(config.options(<span style="color: #800000">'<span style="color: #800000">bitbucket.org<span style="color: #800000">')) <span style="color: #008000">#<span style="color: #008000"> 同for循环,找到'bitbucket.org'下所有键 <span style="color: #0000ff">print(config.items(<span style="color: #800000">'<span style="color: #800000">bitbucket.org<span style="color: #800000">')) <span style="color: #008000">#<span style="color: #008000">找到'bitbucket.org'下所有键值对 <span style="color: #0000ff">print(config.get(<span style="color: #800000">'<span style="color: #800000">bitbucket.org<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">compression<span style="color: #800000">')) <span style="color: #008000">#<span style="color: #008000"> yes get方法Section下的key对应的value 增删改操作config =<span style="color: #000000"> configparser.ConfigParser()
config.read( <span style="color: #800000">'<span style="color: #800000">example.ini<span style="color: #800000">'<span style="color: #000000">)config.add_section(<span style="color: #800000">'<span style="color: #800000">yuan<span style="color: #800000">'<span style="color: #000000">) config.remove_section(<span style="color: #800000">'<span style="color: #800000">bitbucket.org<span style="color: #800000">'<span style="color: #000000">) config.set(<span style="color: #800000">'<span style="color: #800000">topsecret.server.com<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">k1<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">22222<span style="color: #800000">'<span style="color: #000000">) config.write(open(<span style="color: #800000">'<span style="color: #800000">new2.ini<span style="color: #800000">',<span style="color: #800000">"<span style="color: #800000">w<span style="color: #800000">")) logging模块函数式简单配置)
默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。 灵活配置日志级别,日志格式,输出位置: =====logging.debug(<span style="color: #800000">'<span style="color: #800000">debug message<span style="color: #800000">'<span style="color: #000000">)
logging.info(<span style="color: #800000">'<span style="color: #800000">info message<span style="color: #800000">'<span style="color: #000000">) logging.warning(<span style="color: #800000">'<span style="color: #800000">warning message<span style="color: #800000">'<span style="color: #000000">) logging.error(<span style="color: #800000">'<span style="color: #800000">error message<span style="color: #800000">'<span style="color: #000000">) logging.critical(<span style="color: #800000">'<span style="color: #800000">critical message<span style="color: #800000">') 配置参数: filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。 format:指定handler使用的日志显示格式。 datefmt:指定日期时间格式。 level:设置rootlogger(后边会讲解具体概念)的日志级别 stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=<span style="color: #000000">open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。 format参数中可能用到的格式化串: logger对象配置logger =<span style="color: #000000"> logging.getLogger() <span style="color: #008000">#<span style="color: #008000"> 创建一个handler,用于写入日志文件 fh = logging.FileHandler(<span style="color: #800000">'<span style="color: #800000">test.log<span style="color: #800000">',encoding=<span style="color: #800000">'<span style="color: #800000">utf-8<span style="color: #800000">'<span style="color: #000000">) <span style="color: #008000">#<span style="color: #008000"> 再创建一个handler,用于输出到控制台 fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.debug(<span style="color: #800000">'<span style="color: #800000">logger debug message<span style="color: #800000">'<span style="color: #000000">) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |