Python 常见库

发布时间: 更新时间: 总字数:2128 阅读时间:5m 作者: 分享 复制网址

Python 常见库

介绍

标准库

  • os
    • os.name 字符串指示你正在使用的平台。比如对于Windows,它是’nt’,而对于Linux/Unix 用户,它是’posix’。
    • os.getcwd()函数得到当前工作目录,即当前Python 脚本工作的目录路径。
    • os.getenv()os.putenv()函数分别用来读取和设置环境变量。
    • os.listdir()返回指定目录下的所有文件和目录名。
    • os.remove()函数用来删除一个文件。
    • os.system()函数用来运行shell 命令。
  • six : 专门用来兼容 Python 2 和 Python 3 的库。解决了如 urllib 的部分方法不兼容, strbytes 类型不兼容等问题
  • sys
    • sys.argv 程序的入口参数,是一个列表
    • sys.path 装载模块的搜索路径,是一个列表
    • sys.version python 的版本,是一个string
    • sys.exit(status) 退出程序,是一个函数
  • time
    • time.sleep(n) 休息n 秒,可以是小数
    • time.time() 返回一个浮点数,从 1970-1-1 00:00:000 到当前绝对时间的秒数,还有6 位的小数
    • time.localtime(second) 返回一个元组,如果没有second,就使用time.time()返回的秒
      • 元组示例:(2009, 8, 2, 20, 40, 3, 6, 214, 0)
    • time.strftime(format) 格式:time.strftime(’%Y-%m-%d %H:%M:%d’ ‘2009-08-02 20:50:02’
  • math
    • 四舍五入,向下取余:import math; math.floor(39.9)
    • 平方根:import math; math.sqrt(9)
    • x 的 y 次方:import math; math.pow(x, y)
  • random
    • 随机数:import random; random.randint(1, 100)
  • md5
    • md5.new(arg) arg 要md5 的内容,返回一个md5 对象
    • digest(),摘要,返回16 个字节
    • hexdigest(),16 进制摘要,返回32 个字节
  • base64
    • base64.b64encode
    • base64.b64decode
  • hashlib
    • hashlib.md5()
    • hashlib.sha1()
  • eval 作用:将字符串 str 当成有效的表达式来求值并返回计算结果,可以把 list、tuple、dict 和 string 相互转化,示例:
str1 = "{'a': 1, 'b': 2}"
json1 = eval(str1)
print(type(json1))
print(json1)
  • 从命令行读取
    • raw_input() 函数会把所有的输入当作原始数据(raw data),然后将其放入字符串中
    • key = input("输入字符:") 函数会假设用户输入是合法的python表达式
  • shutil module很方便,是os模块的补充
  • re
    • import re re.match(r'^(\d+)(0*)$', '102300').groups()
    • re.compile(r'^(\d{3})-(\d{3,8})$') 先预编译,然后在match,提高效率

第三方库

  • 解析html页面:from HTMLParser import HTMLParser
  • 图像处理标准库:PIL:Python Imaging Library
  • email
    • Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件
    • Python内置一个poplib模块,实现了POP3协议,可以直接用来收邮件。要把POP3收取的文本变成可以阅读的邮件,还需要用email模块提供的各种类来解析原始文本,变成可阅读的邮件对象
  • json模块提供的方法和cPickle模块类似,都有dump,dumps,load,loads方法
  • python-socketio
  • rq 轻量级的任务队列
  • Pillow(PIL)是 Python 图像处理的基础库
  • 进度条(Progress Bar)
  • xmlrpc

其他

  • a=0xffff 十六进制表示
  • import types types.StringType
  • 判断类型用 type()函数,判断继承类的类型用 isinstance()函数
  • type()可以动态创建类,而不需要使用class定义的方式,例如:type('Hello', (object,), dict(hello=fn)),通过type()函数创建的类和直接写class是完全一样的,因为Python解释器遇到class定义时,仅仅是扫描一下class定义的语法,然后调用type()函数创建出class
  • 元类metaclass:除了使用type()动态创建类以外,要控制类的创建行为,还可以使用metaclass
  • 序列化在python中叫pickling,其他语言中称为:serializationmarshalling
  • 通常class的实例都有一个__dict__属性,它就是一个dict,用来存储实例变量
  • 大部分web应用都是IO密集型
  • 单进程的异步编程模型称为协程,有了协程的支持,就可以基于事件驱动编写高效的多任务程序
  • collections模块
    • 用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便
    • deque 是双向列表,解决了list插入和删除低效的问题
    • defaultdict(带默认值的dict) 当key不存在时,不再抛出KeyError,而是返回一个默认值
    • OrderedDict,有顺序的dict
    • Counter实际上是dict的一个子类
  • itertools模块提供的全部是处理迭代功能的函数,它们的返回值不是list,而是迭代对象,只有用for循环迭代的时候才真正计算

使用示例

Python 排序

from distutils.version import StrictVersion
# from packaging.version import Version  # 建议使用,Version 重新封装
versions = ["1.1.2", "1.0.0", "1.3.3", "1.0.12", "1.0.2"]
versions.sort(key=StrictVersion)

versions.sort(key=lambda s: list(map(int, s.split('.'))))
versions_list.sort(key=lambda s: [int(u) for u in s.split('.')])

re 正则表达式

  • (?P...) 命名组
import re

s = 'abc123de'
pattern = re.compile(r'(?P<abc>\d+)(?P<xyz>\D+)')

m = re.search(pattern, s)
m.group('xyz')
m.group('abc')

pickle 示例

  • pickle 是一个持久化模块,支持持久化各种数据,适合于Python复杂数据的存贮
  • 类似的实现 shelve、cPickle、Json、Protobuf
    • cPickle 模块是c语言写的,专门处理序列化
    • cPickle.dumps() dump成str,cPickle.dump() dump到文件中,cPickle.loads() 反序列化str成对象,cPickle.load() 从文件中反序列化出对象
import pickle

data = {'str': 'hello world!', 'list': [1, 2, 3, 4]}

# 写示例
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f, -1)

# 读示例
with open('data.pickle', 'rb') as f:
  data2 = pickle.load(f)
  print(data2)

# 复制到变量
obj_bytes = pickle.dumps(data)

json

json 序列化,解决:TypeError: Object of type datetime is not JSON serializable

import json
from datetime import datetime

now = datetime.now()

# set default=str
json_str = json.dumps({'created_at': now}, default=str)

print(json_str)  # '{"created_at": "2023-07-19 17:42:13.501631"}'
print(type(json_str))  # <class 'str'>
import json
import base64
import zlib
obj = [1, 2, 3]
base64.b64encode(zlib.compress(str.encode(json.dumps(obj), 'utf-8'), 6))

zlib.decompress(data, /, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数