常用模块
calendar模块
- - - calendar实例- - -
import calendar
cal = calendar. calendar( 2020 )
print ( type ( cal) )
print ( cal)
'''
输出2020年一整年的日历
'''
isleap
:判断某一年是否是闰年
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
:直接打印一年日历
prmonth
:直接打印一月的日历
例如:calendar.prmonth(2020,6)
time模块
时间戳
:
一个时间表示,根据不同语言,可以是整数或者浮点数 是从1970年1月1日0时0分0秒
到现在经历的秒数 如果表示的时间是1970年以前或者太遥远的未来,可能出现异常,32位操作系统
能够支持到2038年
- - - time实例- - -
import time
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时间相差的秒数,在没有夏令时的情况下的间隔,东八区的是
altzone
: 获取当 前时区与UTC时间相差的秒数,在有夏令时的情况下
daylight
: 测当前是否是夏令时时间状态,0表示是
localtime
: 得到当前时间
例如:print(time.localtime())
asctime
: 返回元组的正常字符串化之后的时间格式
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实例- - -
import datetime
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
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
mydir = os. getcwd( )
print ( mydir)
'''
C:\Users\asus\python_demo
'''
os.chdir
: 改变当前的工作目录
例如:os.chdir("/Users\Administrator")
os.getsize
:获取文件的大小
os.listdir
:获取当前目录中所有文件的名称列表
os.makedirs
:在当前目录位置递归创建文件夹
os.removedirs
:在当前目录位置递归删除文件夹
os.system
: 运行cmd终端命令,一般推荐使用subprocess代替
os.getenv
: 获取指定的系统环境变量值
os.cpu_count
:获取当前CPU的数量
os.curdir
: curretn dir, 当前目录os.pardir
: parent dir, 父亲目录os.sep
: 当前系统的路径分隔符os.linesep
: 当前系统的换行符号os.name
: 当前系统名称
os.path模块
- - - os. path实例- - -
import os. path
print ( os. path. abspath( "." ) )
'''
C:\Users\asus\python_demo
'''
basename
: 获取路径中的文件名部分
例如:os.path.basename("C/user")
join
: 将多个路径合成为一个路径
split
: 将路径切割为文件夹部分和当前文件部分
例如:os.path.split("c/user/windows")
isdir
: 检测是否是目录
exists
: 判断文件是否在当前目录下存在
shutil模块
- - - shutil实例- - -
import shutil
A = shutil. copy( "被复制的文件路径" , '复制后的文件路径")
print ( A)
B = shutil. copy2( "被复制的文件路径" , '复制后的文件路径")
print ( B)
copyfile
: 将一个文件中的内容复制到另外一个文件当中
例如:shutil.copyfile("被复制的文件路径", '复制后的文件路径")
move
:移动文件/文件夹
例如:shutil.move("需要移动的文件路径", '移动后的文件路径")
make_archive
: 归档操作,将一个文件夹内的文件压缩到一个压缩包中
例如: make_archive("归档之后的路径", "后缀名", "需要归档的路径")
unpack_archive
: 解包操作,将一个压缩包解压到一个路径中
例如:unpack_archive("归档文件路径", "解包后的路径")
random模块
- - - random实例- - -
import 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
'''
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) )
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
'''
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
str1 = hashlib. md5( )
str1. update( 'hello' . encode( 'utf-8' ) )
str1. update( 'cjl' . encode( 'utf-8' ) )
res = str1. hexdigest( )
print ( "str1:" , res)
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
'''