python-常用模块

常用模块

calendar模块

  • 跟日历相关的模块
---calendar实例---
# 使用需要先导入
import calendar
# calendar: 获取一年的日历字符串
# 参数: 
# W=每个日期之间的间隔字符数
# l=每周所占用的行数
# C=每个月之间的间隔字符数
# print(calendar.calendar(2020))
cal = calendar.calendar(2020)
print(type(cal))
print(cal)

# 执行结果:
'''
输出2020年一整年的日历
'''
  • isleap:判断某一年是否是闰年
    • 例如:calendar.isleap(2020)
  • leapdays:获取指定年份之间的闰年个数
    • 例如:calendar.leapdays(2000, 2020)
  • month:获取某个月的日历字符串
    • 例如:calendar.month(2020, 6)
  • weekday:获取周几(结果从0开始0~6)
    • 例如:calendar.weekday(2020, 6, 28)
  • monthrange:获取一个月是周几开始和天数
    • 例如:calendar.monthrange(2020, 6)
  • monthcalendar:返回一个月每天的矩阵列表
    • 例如:calendar.monthcalendar(2020, 6)
  • prcal:直接打印一年日历
    • 例如:calendar.prcal(2020)
  • prmonth:直接打印一月的日历
    • 例如:calendar.prmonth(2020,6)

time模块

  • 时间戳
    • 一个时间表示,根据不同语言,可以是整数或者浮点数
    • 是从1970年1月1日0时0分0秒到现在经历的秒数
    • 如果表示的时间是1970年以前或者太遥远的未来,可能出现异常,32位操作系统能够支持到2038年
---time实例---
# 使用需要先导入
import time
# 得到当前的时间戳
# 即从1970年1月1日0时0分0秒到现在经历的秒数
time.time()

# 执行结果:
'''
1637464900.7300751
'''
  • UTC时间

    • UTC又称为世界协调时间,以英国的格林尼治天文所在地区的时间作为参考的时间,也叫做世界标准时间。
      -中国时间是 UTC+8 东八区
  • 夏令时

    • 夏令时就是在夏天的时候将时间调快一小时,本意是督促大家早睡早起节省蜡烛!每天变成25个小时,本质没变还是24小时
  • 时间元祖

    • 一个包含时间内容的普通元祖
     索引 | 内容 | 属性 | 值
     ---|---|---|---
     0 | 年 | tm_year | 2020 |
     1 | 月 | tm_mon | 1~12 |
     2 | 日 | tm_mday | 1~31 |
     3 | 时 | tm_hour | 0~23 |
     4 | 分 | tm_min | 0~59 |
     5 | 秒 | tm_sec | 0~60 |
     6 | 周几 | tm_wday | 0~6 |
     7 | 第几天 | tm_yday | 1~366 |
     8 | 夏令时 | tm_isdst | 0,1,-1 |
    
  • timezone: 当前时区和UTC时间相差的秒数,在没有夏令时的情况下的间隔,东八区的是

    • 例如:print(time.timezone)
  • altzone: 获取当 前时区与UTC时间相差的秒数,在有夏令时的情况下

    • 例如:print(time.altzone)
  • daylight: 测当前是否是夏令时时间状态,0表示是

    • 例如:print(time.daylight)
  • localtime: 得到当前时间

    • 例如:print(time.localtime())
  • asctime: 返回元组的正常字符串化之后的时间格式

    • 例如:print(time.asctime())
  • ctime: 获取字符串化的时间

    • 例如:print(time.ctime())
  • mktime: 使用时间元祖获取对应的时间戳

    • 例如:
    lt = time.localtime()
    ts = time.mktime(lt)
    print(type(ts))
    print(ts)
    
  • clock: 获取cpu时间,python3.6版本后运行有问题

  • sleep: 使程序暂停,N秒后继续运行

    • 例如:
    for i in range(10):
        print(i)
        time.sleep(1)
    
  • strftime: 将时间元祖转换为自定义字符串格式

    • 所有参数如下表:
    • 格式含义备注
      %a本地(locale)简化星期名称
      %A本地完整星期名称
      %b本地简化月份名称
      %B本地完整月份名称
      %C本地相应的日期和时间表示
      %d一个月中的第几天(01 - 31)
      %H一天中的第几个小时(24 小时制,00 - 23)
      %I一天中的第几个小时(12 小时制,01 - 12)
      %j一年中的第几天(001 - 366)
      %m月份(01-12)
      %M分钟数(00 - 59)
      %p本地am或者pm的相应符注1
      %S秒(01-61)注2
      %U一年中的星期数(00 - 53星期天是一一个星期的开始)第一个星期天之前的所有天数都放在第日周注3
      %w一个星 期中的第几天(0 - 6,0是星期天)注4
      %W和 %U 基本相同,不同的是 %W 以星期一为一个星期的开始
      %x本地相应日期
      %X本地相应时间
      %y去掉世纪的年份 (00。99)
      %Y完整的年份
      %Z用+HHMM或- HMM表示距离格林威治的时区偏移(H 代表+进制的小时数,M代表十进制的分钟数)
      %%%号本身
    • 例如:
    t = time.localtime()
    ft = time.strftime("%Y %m %d %H:%M", t)
    print(ft)
    
    # 执行结果:
    '''
    2020 08 21 11:22
    '''
    

datetime模块

  • datetime提供日期和时间的运算和表示
---datetime实例---
# 使用需要先导入
import datetime

# datetime.date: 一个理想的日期,提供year, month, day属性
dt = datetime.date(2020, 6, 28)
print(dt)
print (dt.day)
print(dt.year)
print (dt.month)

# 执行结果:
'''
2020-06-28
28
2020
6
'''
  • datetime.detatime: 提供日期跟时间的组合
    • 例如:
    from datetime import datetime
    
    # 常用类方法: today, now, utcnow
    # fromtimestamp:从时间戳中返回本地时间
    dt = datetime(2020, 6, 28)
    
    print(dt.today())
    print(dt.now())
    print(dt.fromtimestamp(time.time()))
    
    # 执行结果:
    '''
    2021-11-21 11:24:41.152515
    2021-11-21 11:24:41.153515
    2021-11-21 11:24:41.153516
    '''
    
  • datetime.timedelta: 表示一个时间间隔
    • 例如:
    # 表示一个时间间隔
    from datetime import datetime, timedelta
    
    t1 = datetime.now()
    print(t1.strftime("%Y-%m-%d %H:%M:%S"))
    td = timedelta(hours=1)
    # 当前时间加上时间间隔后,把得到的一个小时后的时间格式化输出
    print((t1+td).strftime("%Y-%m-%d %H:%M:%S"))
        
    # 执行结果:
    '''
    2021-11-21 11:24:52
    2021-11-21 12:24:52
    '''
    

timeit模块

  • 时间测量工具
---timeit实例---
# 使用需要先导入
import timeit
# 测量程序运行时间间隔实验
def p():
    time.sleep(3.1)
t1 = time.time()
p()
print(time.time() - t1)
        
# 执行结果:
'''
3.107889175415039
'''
---timeit实例---
# 测量一个函数的执行时间
def doIt():
    for i in range(1):
        print("Repeat for {0}".format(i))
t = timeit.timeit(stmt=doIt, number=1)
print(t)
        
# 执行结果:
'''
Repeat for 0
0.00018490000002202578
'''

os模块

  • 跟操作系统相关,主要是文件操作
  • 与系统相关的操作,主要包含在三个模块里
    • os:操作系统目录相关
    • os.path:系统路径相关操作
    • shutil:高级文件操作,目录树的操作,文件赋值、删除、移动
  • 路径:
    • 绝对路径:总是从根目录上开始
    • 相对路径:基本以当前环境为开始的一个相对的地方
---os实例---
# 使用需要先导入
import os
# getcwd()获取当前程序运行的目录
mydir = os.getcwd()
print(mydir)
        
# 执行结果:
'''
C:\Users\asus\python_demo
'''
  • os.chdir: 改变当前的工作目录
    • 例如:os.chdir("/Users\Administrator")
  • os.getsize:获取文件的大小
    • 例如:os.getsize(xxx)
  • os.listdir:获取当前目录中所有文件的名称列表
    • 例如:os.listdir()
  • os.makedirs:在当前目录位置递归创建文件夹
    • 例如:os.makedirs("xxx")
  • os.removedirs:在当前目录位置递归删除文件夹
    • 例如:os.removedirs("xxx")
  • os.system: 运行cmd终端命令,一般推荐使用subprocess代替
    • 例如:os.system("dir")
  • os.getenv: 获取指定的系统环境变量值
    • 例如:os.getenv("path")
  • os.cpu_count:获取当前CPU的数量
    • 例如:os.cpu_count()
  • os.curdir: curretn dir, 当前目录
  • os.pardir: parent dir, 父亲目录
  • os.sep: 当前系统的路径分隔符
  • os.linesep: 当前系统的换行符号
  • os.name: 当前系统名称

os.path模块

  • 与路径相关的模块
---os.path实例---
# 使用需要先导入
import os.path
# abspath()将路径转化为绝对路径
print(os.path.abspath("."))
        
# 执行结果:
'''
C:\Users\asus\python_demo
'''
  • basename: 获取路径中的文件名部分
    • 例如:os.path.basename("C/user")
  • join: 将多个路径合成为一个路径
    • 例如:os.path.join("")
  • split: 将路径切割为文件夹部分和当前文件部分
    • 例如:os.path.split("c/user/windows")
  • isdir: 检测是否是目录
    • 例如:os.path.isdir("xxx")
  • exists: 判断文件是否在当前目录下存在
    • 例如:os.path.exists("xxx")

shutil模块

  • 与文件相关的模块
---shutil实例---
# 使用需要先导入
import shutil

# cope()复制文件
# print(shutil.copy("被复制的文件路径", '复制后的文件路径"))
A = shutil.copy("被复制的文件路径", '复制后的文件路径")
print(A)

# cope2()复制文件,保留原文件信息
# print(shutil.copy2("被复制的文件路径", '复制后的文件路径"))
B = shutil.copy2("被复制的文件路径", '复制后的文件路径")
print(B)
  • copyfile: 将一个文件中的内容复制到另外一个文件当中
    • 例如:shutil.copyfile("被复制的文件路径", '复制后的文件路径")
  • move:移动文件/文件夹
    • 例如:shutil.move("需要移动的文件路径", '移动后的文件路径")
  • make_archive: 归档操作,将一个文件夹内的文件压缩到一个压缩包中
    • 例如: make_archive("归档之后的路径", "后缀名", "需要归档的路径")
  • unpack_archive: 解包操作,将一个压缩包解压到一个路径中
    • 例如:unpack_archive("归档文件路径", "解包后的路径")

random模块

  • 随机数,所有的随机模块都是伪随机
---random实例---
# 使用需要先导入
import random
# random() 获取时子之间的随机小数
# 返回值:随机0~1之间的小数
# print(random.random())
C = random.random()
print(C)

# 执行结果:
'''
0.4176462876593493
'''
  • randint:在自定义区间内随机产生一个数
    • 例如:random.randint(0, 100)
  • choice: 随机返回序列中的某个值
import random
D = ["方案" + str(i) for i in range(1,4)]
print("随机数列表:", D)
rst = random.choice(D)
print("生成的随机数:", rst)
    
# 执行结果:
'''
随机数列表: ['方案1', '方案2', '方案3']
生成的随机数: 方案2
'''
  • shufufle: 随机打乱列表
E = [i for i in range(5)]
print(E)
random.shuffle(E)
print(E)

# 执行结果:
'''
[0, 1, 2, 3, 4]
[0, 2, 1, 4, 3]
'''

collections模块

  • namedtuple:tuple类型,是一个可命名的tuple
# 使用需要先导入
import collections
Point = collections.namedtuple("Point", ['x', 'y'])
p = Point(11, 22)
print(p.x)
print(p[0])

# 执行结果:
'''
11
11
'''
Circle = collections.namedtuple("Circle", ['x', 'y', 'r'])
c = Circle(100, 150, 50)
print(c)
print(type(c))
#想检测以下namedtuple到底属于谁的子类
isinstance(c, tuple)

# 执行结果:
'''
Circle(x=100, y=150, r=50)
<class '__main__.Circle'>
True
'''
  • dequeue:比较方便的解决了频繁删除插入带来的效率问题
from collections import deque
q = deque(['a', 'b', 'C'])
print(q)
q. append("d")
print(q)
q. appendleft('x')
print(q)

# 执行结果:
'''
deque(['a', 'b', 'C'])
deque(['a', 'b', 'C', 'd'])
deque(['x', 'a', 'b', 'C', 'd'])
'''
  • defaultdict:当直接读取dict不存在的属性时,直接返回默认值
from collections import defaultdict
func = lambda: "cjl"
d1 = defaultdict(func)
d1["one"] = 1
d1["two"] = 2
print(d1['one'])
print(d1['four'])

# 执行结果:
'''
1
cjl
'''
  • Counter:统计字符串个数
from collections import Counter
# 将字符串拆分为带个字符
c = Counter("qwer")
print(c)
# 统计每种字符串出现的次数
q = ["aaa",'sss','aaa','sdsf','sss','aaa']
c = Counter(q)
print(c)

# 执行结果:
'''
Counter({'q': 1, 'w': 1, 'e': 1, 'r': 1})
Counter({'aaa': 3, 'sss': 2, 'sdsf': 1})
'''

json模块

  • Json是一种表示数据的语法格式,常用的方法如:
    • json.loads():将json数据转换为dict字典
    • json.dumps():将dict字典转化为json数据
  • 写入json文件时
    • 使用indent=1可使内容换行
    • 使用ensure_ascii=False避免乱码
    • 例如:json.dumps(字典, indent=1, ensure_ascii=False)
  • Json基本格式:
{
    "one":1,
    "two":2,
    "three":[
        {
            "four":4,
            "five":5
        },
        {
            "six":6,
            "seven":7
        }
    ]
}
  • 猴子补丁(monkey patch)
    • ujson即比json读取速度更快的一个模块
    • 当我们在编写了大量的代码后,不想再重写修改,我们就可以用到猴子补丁
  • 使用方法:
    • 导入模块import json, ujson
    • 替换原json方法:
      • json.dumps = ujson.dumps
      • json.loads = ujson.loads
    • 注:import ujson as json这样搞不行
import json
import ujson
def monkey_patch():
    json.__name__ = 'ujson'
    json.dumps = ujson.dumps
    json.loads = ujson.loads
monkey_patch_json()

hashlib模块

  • 哈希(hash)的概述:
    • hash是一类算法,在Python3.x里代替了md5模块sha模块,主要提供SHA1, SHA224, SHA256, SHA521, sha384, MD5等算法,该算法接受传入的内容,进过运算得到一串hash值
  • 哈希(hash)的特点:
    • ①只要传入的内容一样, 得到的hash值必然一样
    • ②不能由hash值返解成内容
    • ③不管内容多大,只要使用的hash算法不变,得到的hash值长度一定不変
  • 哈希(hash)的用途:
    • 特点②用于密码密文传输与验证
    • 特点①和③用于文件完整性校验
import hashlib
# 使用MD5加密算法
str1 = hashlib.md5()
str1.update('hello'.encode('utf-8'))
str1.update('cjl'.encode('utf-8'))
res = str1.hexdigest()
print("str1:", res)
# 同样使用MD5加密算法
str2 = hashlib.md5('hel'.encode('utf-8'))
str2.update('lo'.encode('utf-8'))
str2.update('cjl'.encode('utf-8'))
res = str2.hexdigest()
print("str2:", res)

# 执行结果:
'''
str1: 4318642fc891a2c70d3d3c1800f44931
str2: 4318642fc891a2c70d3d3c1800f44931
'''
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值