iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 常用模块续
  • 399
分享到

Python 常用模块续

模块常用Python 2023-01-31 01:01:10 399人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

用于记录日志并线程安全的模块 import logging logging.basicConfig(level=logging.DEBUG, fORMat='%(asctime)s - %(name

用于记录日志线程安全的模块

import logging
logging.basicConfig(level=logging.DEBUG,
                    fORMat='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S %p',
                    filename='log.txt',
                    filemode='w'
                    )
logging.debug("debug messages")
logging.info("info messages")
logging.warning("warning messages")
logging.error("error messages")
logging.critical("critical messages")

日志文本结果

2018-03-23 10:33:43 AM - root - DEBUG -os_module:  debug messages
2018-03-23 10:33:43 AM - root - INFO -os_module:  info messages
2018-03-23 10:33:43 AM - root - WARNING -os_module:  warning messages
2018-03-23 10:33:43 AM - root - ERROR -os_module:  error messages
2018-03-23 10:33:43 AM - root - CRITICAL -os_module:  critical messages

日志基本配置选项:

Format Description
filename 指定日志文件名
filemode 指定操作日志文件的模式,默认是‘a’
format 记录日志的格式
datefmt 记录日期时间的格式
style 样式
level 指定要记录的日志级别
stream 使用指定的流初始化,与filename不可同时配置
handlers 指定iterable,与filename和stream不兼容

日志等级:

level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0

日志格式:
Python 常用模块续

更多日志详细信息请猛击这里

在程序运行时保存数据的一种方法是把所有数据以格式化的方式写入一个简单的文本文件中,只要保存和装载的工具在所选格式上达成一致,我们就可以随心所欲地使用任何自定义格式。
1、pickle
pickle模块将内存中的python对象转化为序列化的字节流,这是一种可以写入任何类似文件对象的字节串,同时,pickle模块也可以根据序列化的字节流重新构建原来内存中的对象。
转换并写入文件:

import pickle
db = {'name':'Eric Jia','age':'18','job':'ops','pay':200}
dbfile = open('pickle_db','wb')
pickle.dump(db,dbfile)
dbfile.close()

从文件中读取数据:

import pickle
dbfile = open('pickle_db','rb')
pickle.load(dbfile)
dbfile.close()

直接转换,不写入文件:

import pickle
db = {'name':'Eric Jia','age':'18','job':'ops','pay':200}
a = pickle.dumps(db)
print("a:",a)

b = pickle.loads(a)
print("b:",b)
a: b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x08\x00\x00\x00Eric Jiaq\x02X\x03\x00\x00\x00ageq\x03X\x02\x00\x00\x0018q\x04X\x03\x00\x00\x00jobq\x05X\x03\x00\x00\x00opsq\x06X\x03\x00\x00\x00payq\x07K\xc8u.'
b: {'name': 'Eric Jia', 'age': '18', 'job': 'ops', 'pay': 200}

2、JSON
json主要用于Python数据类型与字符串之间的转换,用法与pickle一致

1、dump:转换为字符串存入文件
import json
db = {'name':'Eric Jia','age':'18','job':'ops','pay':200}
dbfile = open('json_db','w')
json.dump(db,dbfile)
dbfile.close()
2、load:从文件中取出并转换为Python数据对象
dbfile = open('json_db','r')
json.load(dbfile)
dbfile.close()
3、dumps,loads:直接转换,不写入文件
db = {'name':'Eric Jia','age':'18','job':'ops','pay':200}
a = json.dumps(db)
print(a)
b = json.loads(a)
print(b)

3、shalve
pickle和json可以将python数据类型持久存储,假如你的文件系统可以处理任意多需要的文件,每个文件都是一个单独的pickle文件,这样可以避免修改一条记录时都要重新载入和存储整个数据库,这就需要将每个pickle文件名当作字典的键来存储,通过键值来访问数据,Python标准库为我们提供了一个名为shelves的模块来做这些事。
创建shelve数据库

N1 = {'name':'Eric Jia','age':'18','job':'ops','pay':200}
N2 = {'name':'Bob smith','age':'28','job':'java','pay':2000}
N3 = {'name':'David','age':'38','job':'Go','pay':20000}

import shelve
db = shelve.open('make_db')

db['N1'] = N1
db['N2'] = N2
db['N3'] = N3

db.close()

创建出的shelve数据库如下
Python 常用模块续

重新打开shelve并通过键来取得数据

import shelve
db = shelve.open('make_db')
for key in db:
    print(key,"=>",db[key])
db.close()
输出:
N1 => {'name': 'Eric Jia', 'age': '18', 'job': 'ops', 'pay': 200}
N2 => {'name': 'Bob smith', 'age': '28', 'job': 'java', 'pay': 2000}
N3 => {'name': 'David', 'age': '38', 'job': 'go', 'pay': 20000}

小结:
1、shelve内部会使用pickle来序列化和反序列化记录,它的接口像pickle一样简单:与字典相同,只是增加了open和close调用。
2、pickle用于python特有的类型和python的数据类型间进行转换,是python独有的
3、json用于字符串和python数据类型间进行转换,所有程序语言都可用。

   configparser模块用于对特定的配置进行操作,它与windows中的ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)。在py2中是ConfigParser。

configparser类方法:

import configparser
# 创建configparser实例
config = configparser.ConfigParser()

# 读取配置文件
config.read('user.conf')

# 返回配置文件中节序列
config.sections()

# 返回某个项目中的所有键的序列
config.options(section)

# 返回section节中,option的键值
config.get(section,option)

# 添加一个配置文件节点(str)
config.add_section(str)

# 设置section节点中,键名为option的值(val)
config.set(section,option,val)

# 写入配置文件
config.write(obj_file)

# 移除节点
config.remove_section(section)

# 移除键,值
config.remove_option(option,value)

借助例子来理解configparser模块的使用
configparser.py文件

import configparser

# 创建configparser实例
config = configparser.ConfigParser()

# 添加51cto配置文件节点
config.add_section("51cto")
config.add_section("service")

# 为51cto节点添加键、值
config.set("51cto","blog","blog.51cto.com")
config.set("51cto","WEB","www.51cto.com")
config.set("service","Mysql","3306")

# 写入51.conf文件
with open('51.conf', 'w') as configfile:
    config.write(configfile)

# 读取配置文件
config.read('51.conf')

# 返回配置文件中节序列,键,值
for i in config.sections():
    print(i)
    for j in config.options(i):
        print(j,":",config.get(i,j))

# 移除节点
config.remove_section('service')
with open('51.conf', 'w') as configfile:
    config.write(configfile)

# 移除键
config.remove_option('51cto','web')
with open('51.conf', 'w') as configfile:
    config.write(configfile)

输出配置文件51.conf如下:

[51cto]
blog = blog.51cto.com
web = www.51cto.com

更多configparser模块用法猛击这里

正则表达式是一种小型的、高度专业化的编程语言,在python中,他通过re模块实现。正则表达式模式被编译成一系列的字节码,然后由C编写的匹配引擎执行。

字符:
  . 匹配除换行符以外的任意字符
  \w 匹配字母或数字或下划线或汉字
  \s 匹配任意的空白符
  \d 匹配数字
  \b 匹配单词的开始或结束
  ^ 匹配字符串的开始
  $ 匹配字符串的结束

次数:

  * 重复零次或更多次
  + 重复一次或更多次
  ? 重复零次或一次
  {n} 重复n次
  {n,} 重复n次或更多次
  {n,m} 重复n到m次

常用方法:
1、match:从起始位置开始根据模型去字符串中匹配指定内容,匹配单个,如果字符串与模式不匹配, 则返回 None。

re.match(pattern, string, flags=0)
示例:
import re

m = re.match("\d+","123abc")
if m :print(m.group())

2、search:根据模型去字符串中匹配指定内容,匹配单个

re.search(pattern, string, flags=0)
示例:
import re

m = re.search("\d+","abc123abc")
if m :print(m.group())

3、group:返回匹配的一个或多个子组

import re
a = "123abc456def"
# group(0):返回匹配到的全部结果
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0))   # 123abc456
# group(1):返回匹配到的第一组结果
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1))   # 123
# group(2):返回匹配到的第二组结果
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2))   # abc
# group(3):返回匹配到的第三组结果
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3))   # 456
# group(4):当前匹配模式没有第四组,拋IndexError错误
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(4))
##############
Traceback (most recent call last):
  File "D:/fullstack/week1/day6/re_modules.py", line 10, in <module>
    print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(4))
IndexError: no such group
##############
# group(1,2,3):返回三组结果
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1,2,3))   #  ('123', 'abc', '456')
# groups():返回匹配到的全部结果
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).groups()) #  ('123', 'abc', '456')

4、findall:返回字符串中模式的所有非重叠匹配项

re.findall(pattern, string, flags=0)
示例:
import re

a = "123abc456def"
m = re.findall("\d+",a)
if m:print(m)  

# ['123', '456']

5、finditer:返回迭代器对象,其余与findall返回一致

re.finditer(pattern, string, flags=0)
示例:
import re

a = "123abc456def"
m = re.finditer("\d+",a)
for i in m:print(i.group())

# 123
# 456

6、sub:用于替换匹配的字符串

re.sub(pattern, repl, string, count=0, flags=0)
示例:
import re

a = "123abc456def"
m = re.sub("\d+","zxc",a)
print(m)

# zxcabczxcdef

7、split:根据指定匹配进行分组

re.split(pattern, string, maxsplit=0, flags=0)
示例:
import re

a = "123abc456def"
m = re.split("\d+",a)
print(m)

# ['', 'abc', 'def']

--结束END--

本文标题: Python 常用模块续

本文链接: https://www.lsjlt.com/news/184228.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 常用模块续
    用于记录日志并线程安全的模块 import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name...
    99+
    2023-01-31
    模块 常用 Python
  • python常用模块
    collections模块 namedtuple #命名元组 #生成可以使用名字来访问元素内容的tuple from collections import namedtuple Point = namedtuple('point',...
    99+
    2023-01-30
    模块 常用 python
  • Python 常用模块
    1、ConfigParser模块:说明: 读取配置文件http://wangwei007.blog.51cto.com/68019/1104911    2、SQLAlchemy说明:数据库操作模块http://blog.sina.com....
    99+
    2023-01-31
    模块 常用 Python
  • [python] os.path模块常用
    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。 o...
    99+
    2023-01-30
    模块 常用 python
  • Python ansible常用模块
    import ansible.runnerimport ansible.playbookimport ansible.inventoryfrom ansible import callbacksfrom ansible import uti...
    99+
    2023-01-31
    模块 常用 Python
  • python的常用模块
    os模块这个模块包含普遍的操作系统功能os.name:获取当前系统平台,Windows下返回'nt',Linux下返回'posix'。os.linesep:获取当前平台使用的行终止符。Windows下返回'/r/n',Linux使用'/n'...
    99+
    2023-01-31
    模块 常用 python
  • 常用的python模块
    一、time与datetime模块1、在Python中,通常有这几种方式来表示时间:时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量格式化的时间字符串(Format String...
    99+
    2023-01-31
    模块 常用 python
  • Python 常用基础模块(二):os模块
    目录 一、os模块介绍二、路径介绍三、常用方法详解3.1 getcwd()方法——获取当前工作目录(字符串)3.2 listdir()方法——返回指定路径下的目录名和文件名3.3 makedi...
    99+
    2023-09-09
    python 开发语言
  • python爬虫常用模块
    python标准库之urllib模块涉及到网络这块,必不可少的模式就是urllib.request了,顾名思义这个模块主要负责打开URL和HTTP协议之类的urllib最简单的应用就是urllib.request.urlopen(url, ...
    99+
    2023-01-30
    爬虫 模块 常用
  • python常用模块收录
    time模块:  在python中,通常有以下几种方式来表示时间:    1、时间戳,如time.time    2、格式化的时间字符串,如'17/01/2017 10:17:00'    3、元组(struct_time),如gmtime...
    99+
    2023-01-31
    模块 常用 python
  • Python 常用模块学习
    Python中的模块是可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块。Python允许“导入”其他模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统。Py...
    99+
    2023-01-31
    模块 常用 Python
  • 关于Python常用模块时间模块time
    目录time简介导入模块1.时间戳2.时间元组(1)把时间戳转换为元组形式(2)元组转换为时间戳输出(3)把元组转换为格式化时间(4)把时间戳转换为格式化时间3.字符串时间(重点)(...
    99+
    2023-05-16
    Python模块 Python时间模块 Python time模块
  • python常用模块详解
    目录一、模块概述二、模块内容三、模块导入的原理四、模块导入的方法五、random模块 六、time模块(1)python表示时间的三种格式(2)常用方法:(3)时间元组、时...
    99+
    2024-04-02
  • python常用的时间模块之datetime模块
    今天小编给大家分享的是python常用的时间模块之datetime模块,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。一、基本类型1、date类datetime.date(2023,5...
    99+
    2023-08-03
  • python 常用的模块 optpars
    一、optparse 模块  功能:optparse模块用于处理命令行参数        使用流程:    1、首先,必须 import OptionParser 类,创建一个 OptionParser 对象:from optparse i...
    99+
    2023-01-31
    模块 常用 python
  • 常用模块 - configparse模块
    一、简介 configparser模块在Python中是用来读取配置文件的,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节点(section),每个节可以有多个参数(键=值)。 二、生成配置文件 #! /us...
    99+
    2023-01-31
    模块 常用 configparse
  • 常用模块 - hashlib模块
    一、简介 Python的hashlib提供了常见的摘要算法,如MD5、SHA1、SHA224、SHA256、SHA384、SHA512等算法。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长...
    99+
    2023-01-31
    模块 常用 hashlib
  • python常见模块之OS模块和time模块
    一、OS模块概述 Python OS模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。 二、常用方法 三、OS模...
    99+
    2024-04-02
  • 常用模块 - openpyxl模块
    一、简介 xlrd/xlwt          主要是针对Office 2003或更早版本的XLS文件格式          缺点:不支持XLSX文件格式 OpenPyXL          能读能写能修改          缺点:不支持...
    99+
    2023-01-31
    模块 常用 openpyxl
  • Python学习 :常用模块(二)
    常用模块(二) 四、os模块 os模块是与操作系统交互的一个接口,用于对操作系统进行调用 os.getcwd() # 提供当前工作目录 os.chdir() # 改变当前工作目录 os.curdir() # 返回当前目录('.'...
    99+
    2023-01-30
    模块 常用 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作