Python中常用模块(calendar、time、datetime、timeit、os、shutil、zip、random)

常用模块

  • calendar
  • time
  • datetime
  • timeit
  • os
  • shutil
  • zip
  • random
calendar
  • 跟日历有关的模块
# 使用之前需要导入
import calendar
# 获取一年的日历字符串
# 参数
# w = 每个日期之前的间隔字符数
# l = 每周所占用的行数
# c = 每个月之间的间隔字符数
cal = calendar.calendar(2019, l=0, c=0)
print(cal)

>>>
结果就是和墙上挂的日历一样的效果

---
# isleap:判断某一年是不是闰年
print(calendar.isleap(2000))

>>>
True

---
# leapdays: 获取指定年份之间的闰年的个数
print(calendar.leapdays(2001,2018))

>>>
4

---
# month() 获取某个月的日历字符串
# 格式:calendar.month(年,月)
# 回值:月日历的字符串
m7 = calendar.month(2019, 7)
print(m7)

>>>   
      July 2019
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

---
# monthrange() 获取一个月的周几开始即和天数
# 格式:calendar.monthrange(年,月)
# 回值:元组(周几开始,总天数)
# 注意:周默认0-6 表示周一到周天
w,t = calendar.monthrange(2019, 7) # 元组有两个返回值可以直接用两个接收
print(w)
print(t)

>>>
0
31

---
# monthcalendar() 返回一个月每天的矩阵列表
# 格式:calendar.monthcalendar(年,月)
# 回值:二级列表
# 注意:矩阵中没有天数用零表示
m = calendar.monthcalendar(2019, 7)
print(m)

>>>
[[1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15, 16, 17, 18, 19, 20, 21], [22, 23, 24, 25, 26, 27, 28], [29, 30, 31, 0, 0, 0, 0]]

---
# prcal: 直接打印日历 == print calendar的缩写
calendar.prcal(2019)

---
# prmonth() 直接打印整个月的日历 == print month
# 格式:calendar.prmonth(年,月)
# 回值:无
calendar.prmonth(2019, 8)

---
# weekday()获取周几
# 格式:calendar.weekday(年,月,日)
# 回值:周几对应的数字
print(calendar.weekday(2019, 7, 22))

>>>
0
time 模块

时间戳

  • 一个时间表示,根据不同的月宴,可以是整数或者浮点数
  • 是从1970年1月1日0时0分0秒到现在经历的秒数
  • 如果表示的时间是1970年一前或者太遥远的未来,可能出现异常
  • 32位系统能支持到2038年

UTC时间

  • UTC时间称为世界协调时间,以英国的格林尼治天文台所在底去的时间作为参考的时间,也叫做世界标准时间
  • 中国时区UTC+8 东八区

夏令时

  • 夏令时就是在夏天的时候将时间调快一小时,本意是督促大家早睡早起,减少照明量,以充分利用光照资源,从而节约照明用电

时间元组

  • 一个包含实践内容的普通元组
索引内容属性
0tm_year2015
1tm_mon1~12
2tm_mday1~31
3tm_hour0~23
4tm_min0~59
5tm_sec0~61
6周几tm_wday0~6
7第几天tm_yday1~366
8夏令时tm_isdst0,1,-1(表示夏令时)
# 导入
import time
# 时间模块的属性
# timezone:当前时区和UTC时间相差的秒数,在没有夏令时的情况下的间隔,东八区的是 -28800
# altzone: 互殴去当前时区和UTC时间相差的描述,有夏令时
# daylight 测量当前是否是夏令时时间状态
print(time.timezone)

>>>
-28800

---
# 得到时间戳
print(time.time())

>>>
1563794531.4102836

---
# 获取当下时间
# 可以通过点号操作符得到相应的属性元素内容
print(time.localtime())
print(time.localtime().tm_hour)

>>>
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=22, tm_hour=19, tm_min=24, tm_sec=54, tm_wday=0, tm_yday=203, tm_isdst=0)
19

---
# asctime() 返回元组的正常字符串化之后的时间格式
# 格式:time.asctime(时间元组)
tt = time.asctime()
print(tt)

>>>
Mon Jul 22 19:29:18 2019

---
# ctime:获取字符串化的当前时间
print(time.ctime())

>>>
Mon Jul 22 19:30:04 2019

---
# mktime() 使用时间元组获取对应的时间戳
# 格式:time.mktime(时间元组)
# 回值:浮点数时间戳
tl = time.localtime()
ts = time.mktime(tl)
print(ts)

>>>
1563795197.0

---
# clock: 获取cpu时间,3.0-3.3版本直接使用,3.6调用有问题
# sleep: 是程序进入睡眠,n秒后结束
time.sleep(2) # 睡眠2秒

----
# strftime:将时间元组转化为自定义的字符串格式
ft = time.strftime("%Y %m %d  %H:%M")
print(ft)

>>>
2019 07 22  19:59
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
datetime模块
  • datetime提供日期和时间的运算和表示
import datetime
# datetime 常见属性
# datetime.date: 一个理想的日期,提供year,month,day属性
print(datetime.date(2019, 7, 22))

>>>
2019-07-22

---
from datetime import datetime
# datetime.datetime
# 常用的类方法
# today
# now
# utcnow
# fromtimestamp
dt = datetime(2019, 7, 22)
print(dt.today())
print(dt.now())
print(dt.fromtimestamp(time.time()))

>>>
2019-07-22 20:15:51.732900
2019-07-22 20:15:51.733395
2019-07-22 20:15:51.733395

---
from datetime import datetime, timedelta
# datetime.timedelta:表示一个时间间隔
t = datetime.now()
print(t.strftime("%Y-%m-%d %H:%M:%S"))
td = timedelta(hours=1)
print((t+td).strftime("%Y-%m-%d %H:%M:%S"))

>>>
2019-07-22 20:21:17
2019-07-22 21:21:17
timeit 时间测量工具
import timeit
# 利用timeit调用代码,执行10000次,查看运行时间
t = timeit.timeit(stmt="[i for i in range(1000)]", number = 10000)
# 测量代码块c执行10000次的运行结果
c = '''
sum = []
for i in range(1000):
    sum.append(i)
'''
tt = timeit.timeit(stmt=c, number=10000)
print(t)
print(tt)

>>>
0.6410589000006439
1.7191828999993959

----
# timeit 可以执行一个函数,来测量一个函数的执行时间
def doIt():
    num = 3
    for i in range(num):
        print("Repeat for {0}".format(i))
        
t = timeit.timeit(stmt = doIt, number=10)
print(t)

----
s = '''
def doIt(num):
    for i in range(num):
        print("Repeat for {0}".format(i))
'''
t = timeit.timeit("doIt(num)", setup=s+"num=3", number=10)
print(t)
os
  • 跟操作系统相关,主要是文件操作
  • 与系统操作相关的操作,主要包含在三个模块里
    • os,操作系统目录相关
    • os.path,系统路径相关
    • shutil,高级文件操作,目录树的操作,文件赋值,删除,移动
  • 路径
    • 绝对路径:从根目录开始
    • 相对路径:从当前环境开始
import os
# getced() 获取当前的工作目录
# 格式:os.getcwd()
# 回值:当前目录的字符串
mydir = os.getcwd()
print(mydir)

----
# chdir() 改变当前目录
# 格式:os.chdir(路径)
os.chdir('C:\Users')
mydir = os.getcwd()
print(mydir)

----
# listdir() 获取一个目录中所有子目录和文件的名称列表
# 格式: os.listdir(路径)
ld = os.listdir()
print(ld)

---
# makedirs() 递归创建文件夹
# 格式:os.makedirs()
rst = os.makedirs("dana") # 在当前路径下创建dana文件
print(rst)

---
# system() 运行系统shell命令
# 格式:os.system(系统命令) 可能有问题
rst = os.system("ls")
print(rst)

----# getenv()  获取指定的系统环境变量
rst = os.getenv("PATH")
print(rst)

----
# exit() 退出当前程序

----
##### 值部分
# os.curdir:current dir当前目录
# os.pardir:parent die父亲目录
# os.sep:当前系统的路径分隔符 window:"\"linux:"/"
# os.linesep:当前系统的路径分隔符 window:"\r\n"其他"\n"
# os.name:当前系统名称 windows:"nt"其他"posix"
print(os.curdir)
print(os.pardir)
print(os.sep)
print(os.linesep)
print(os.name)

-----
# os.path 模块
# abspath() 将路径转化为绝对路径
# . 点号,代表当前目录
# .. 双点 代表父目录
import os.path as op
absp = op.abspath(".")
print(absp)

-----
# basename()获取路径中文件名部分
# 格式:os.path.basename(路径)
bn = op.basename("home/dana.haha")
print(bn)

----
# ioin() 将多个路径合并称一个路径
# 格式:os.path.join(路径1,路径2....)
bd = "\home\\test"
fn = "dana.haha"
print(op.join(bd, fn))

-----
# split() 将路径切割成文件夹部分和当前文件部分
t = op.split("home\dana.haha")
print(t)

------
# isdir() 检测是否是目录
rst = op.isdir("\home\dana")
print(rst)

----
# exists() 检测文件或者目录是否存在
e = op.exists("\home\test")
print(e)
shutil 模块
# copy() 复制文件
# 格式:shutil.copy(来源路径,目标路径)
# 回值:返回目标路径
# 拷贝的同时,可以给文件重命名
import shutil
rst = shutil.copy("/home/eaxm/dana.haha", "/home/dana/haha.haha")
print(rst)

---
# copy2() 复制文件,保留原数据
# 格式:shutil.copy2(来源路径,目标路径)

---
# copyfile() 讲一个文件中的内容复制到另一个文件中
# 格式:shutil.copyfile(来源路径,目标路径)
rst = shutil.copyfile("/home/eaxm/dana.haha", "/home/dana/haha.haha")
print(rst)

----
# move() 移动文件/文件夹
# 格式:move(来源路径,目标路径)
# 回值:目标路径
rst = shutil.move("/home/eaxm/dana.haha", "/home/dana/haha.haha")
print(rst)

---
# 归档和压缩
# 归档:把多个文件或者文件夹合并到一个文件当中
# 压缩:用算法把多个文件或者文件夹无损或者有损合并到一个文件当中

---
# make_archive() 归档操作
# 格式:shutil。make_archive("归档之后的目录和文件夹", "后缀","需要归档的文件")
# 回值:归档之后的地址
# 后缀:zip,tar,gz,rar
rst = shutil.make_archive("/home/exam","zip","/home/dana")
print(rst)

----
# unpack_archive() 解包操作
# 格式:shutil.unpack_archive("归档文件地址","解包之后的地址")
zip压缩包
  • 模块名叫 zipfile
import zipfile
# zipfile.ZipFile(file[,mode[,compression[,allowZip64]]])
# 创建一个ZipFile对象,表示一个zip文件,参数file表示文件的路径或类文件对象
zf = zipfile.ZipFile("/home/exam/dana.zip")

----
# ZipFile.getinfo(name):
# 获取zip文档内指定文件的信息,返回一个zipfilr.ZipFile对象

----
# ZipFile。extractall([path[,members[,pwd]])
# 解压zip文档中的所有文件到当前目录,
random
  • 随机数
  • 所有的随机模块都是伪随机
import random
# random() 获取0-1之间的随机小数
# 格式:random.random()
print(random.random())

>>>
0.5201223348423122

---
# choice() 随机返回序列中的某一个值
# 格式:random.choice(序列)
# 返回值:序列中的某一个值
l = [str(i) + "haha" for i in range(10)]
print(random.choice(l))

---
# shuffle() 随机打乱列表
l = [i for i in range(10)]
print(l)
random.shuffle(l)
print(l)

>>>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 5, 4, 6, 9, 0, 2, 3, 8, 7]

----
# random.randint  返回值[0, 100]
print(random.randint(0, 100))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值