11-常用模块

常用模块

  • calendar
  • time
  • datetime
  • timeit
  • os
  • shutil
  • zip
  • math
  • string
  • 上述所有模块使用理论上都应该先导入,string是特例
  • calendar,time,datetime的区别参考中文意思

calendar

  • 跟日历相关的模块
# coding=gbk

# 使用需要先导入
import calendar

# calendar:获取一年的日历字符串
# 参数
# w = 每个日期之间的间隔字符数
# l = 每周所占用的行数
# c = 每个月之间的间隔字符串
'''
cal = calendar.calendar(2017)
print(type(cal))
print(cal)

cal = calendar.calendar(2017, l=0, c=5)
print(cal)
'''
# isleap:判断某一年是否闰年
'''
for i in range(1998,2020):
	if calendar.isleap(i) == True:
		print('{0}年是闰年'.format(i))
'''
# leapdays:获取指定年份之间的闰年的个数
'''
print(calendar.leapdays(1998,2019))
'''

# month() 获取某个月的日历字符串
# 格式:calendar.month(年,月)
# 返回值:月日历的字符串
'''
m3 = calendar.month(2019,2)
print(m3)
'''

# monthrange()获取一个月的周几开始和天数
# 格式:calendar.monthrange(年,月)
# 格式:元组(周几开始,总天数)
# 注意:周默认0-6表示周一到周日
'''
w,t = calendar.monthrange(2017,3)
print(w,t)
'''
# monthcalendar()返回一个月每天的矩阵列表
# 格式:calendar.monthcalendar(年,月)
# 返回值:二级列表
# 注意:矩阵中没有天数用0表示
'''
m = calendar.monthcalendar(2019,3)
print(m)
'''
# prcal:print calendar 直接打印日历
'''
p = calendar.prcal(2019)
print(p)
'''
# prmonth()直接打印整个月的日历
# 格式:calendar.prmonth(年,月)
# 返回值:无
'''
mo = calendar.prmonth(2019,3)
print(mo)
'''

# weekday()获取周几
# 格式:calendar.weekday(年,月,日)
# 返回值:周几对应的数字
'''
d = calendar.weekday(2019,3,24)
print(d)
'''

time模块

  • 时间戳
    • 一个时间表示,根据不同语言,可以是整数或者浮点数
    • 是从1970年1月1日0是0分0秒到现在经理的秒数
    • 如果表示的时间是1970年以前或者太遥远的未来,可能出现异常
    • 32位操作系统能够支持到2038年
  • UTC时间
    • UTC又称为世界协调时间,以英国的格林尼治天文所在地区的时间作为参考的时间,也叫做时间标准时间
    • 中国时间是 UTC+8 东八区
  • 夏令时
    • 夏令时就是夏天的时候将时间条块一小时,本意是督促大家早睡早起节省蜡烛,每天变成25个小时,本质没变还是24小时
  • 时间元组
    • 一个包含时间内容的普通元组
#coding=gbk

# 需要单独导入
import time

# 时间模块的属性
# timezone:当前时区和UTC时间相差的描述,在没有夏令时的情况下的间隔
# altzong:获取当前时区域UTC时间相差的秒数,在有夏令时的情况下
# daylight:测当前是否是夏令时时间状态,0 表示是
'''
print(time.daylight)
'''
# 得到时间戳
'''
print(time.time())
'''
#localtime:得到当前时间的时间结构
# 可以通过点号操作符得到相应的属性元素的内容
'''
t = time.localtime()
print(t)
'''
# asctime():返回元组的正常字符串化之后的时间格式
# 格式:time.asctimen(时间元组)
# 返回值:字符串
'''
t = time.localtime()
tt = time.asctime(t)
print(tt)
Wed Feb 20 19:41:47 2019
'''
# mktime():使用时间元组获取对应的时间戳
# 格式:time.mktime(时间元组)
# 返回值:浮点数时间戳
'''
lt = time.localtime()
ts = time.mktime(lt)
print(ts)
'''
# clock:获取cpu时间

# sleep:使程序进入睡眠,n秒后继续
'''
for i in range(10):
	print(i)
	time.sleep(1)

def p():
	time.sleep(2)
	
t0 = time.clock()
time.sleep(3)
t1 = time.clock()
print(t1-t0)
'''
# strftime:
# 把时间表示成 XX年XX月XX日, XX时XX分
'''
t = time.localtime()
ft = time.strftime("%Y{0}%m{1}%d{2} %H{3}%M{4}",t).format("年","月","日","时","分")
print(ft)
'''

datetime模块

  • 提供日期和时间的运算和表示
#coding=utf-8

import datetime

# datetime常见属性
# datetime.date:一个理想的日期,提供year, month, day属性
'''
dt = datetime.date(2018, 3, 26))
print(dt)
'''
# datetime.time:提供一个理想的时间,居于hour,minute,sec
# datetime.datetime:提供日期跟时间的组合
# datetime.timedelta:提供一个时间差,时间长度
'''
print(dir(datetime))
'''

timeit测量

import timeit
c ='''
sum = []
for i in range(1000):
	sum.append(i)
'''
# 利用timeit调用代码,执行100000次,查看运行时间
t1 = timeit.timeit(stmt = "[i for i in range(1000)]", number = 100000)
# 测量代码c执行100000次运行结果
t2 = timeit.timeit(stmt=c, number=100000)
print(t1)
print(t2)

s = '''
def doit(sum):
	for i in range(num):
		print("Repeat for {0}".format(i))
'''
# 执行doit(num)
# setup负责把环境变量准备好
# 实际相当于给timeit创造了一个小环境

t = timeit.timeit("doit(num)", setup=s+"num=3",number=10)
print(t)

OS - 操作系统相关

  • 跟操作系统相关,主要是文件操作
  • 于系统相关的操作,主要包含在三个模块里
    • os,操作系统目录相关
    • os.path,系统路径相关操作
    • shutil,高级文件操作,目录树的操作,文件赋值,删除,移动
  • 路径
    • 绝对路径:总是从跟目录上开始
    • 相对路径:基本以当前环境为开始的一个相对的地方
#coding=gbk
#os 模块
import os
# getcwd()获取当前的工作牡蛎
# 格式 os.getcwd()
# 返回值:当前工作目录的字符串
# 当前工作目录就是程序在进行文件相关操作,默认查找文件的目录
'''
mydir = os.getcwd()
print(mydir)
'''
# chdir()改变当前的工作目录
# 格式:os.chdir(路径)
# 返回值:无
'''
os.chdir('F:')
mygir = os.getcwd()
print(mydir)
'''

# listdir() 获取一个目录中所有子目录和文件的名称列表
# 格式:os.listdir(路径)
# 返回值:所有子目录和文件名称的列表
'''
ld = os.listdir()
print(ld)
'''
# makedirs()递归创建文件夹
# 格式:os.makerdirs(递归路径)
# 返回值:无
# 递归路径:多个文件夹层层包含的路径就是递归路径
'''
rst = os.makedirs("jjc")
print(rst)
'''

# system()运行系统shell命令
# 格式:os.system(系统命令)
# 返回值:打开一个shell或者中端界面
# ls是列出当前文件个文件夹的系统命令
'''
rst = os.system("touch dana.haha")
print(rst)
'''

# 值部分
- os.curdir:当前目录
- os.pardir:父目录
- os.sep:当前系统的路径分隔符
	- windows:"\"
	- linus:"/"
- os.linesep:当前系统的换行符号
	- windows:"\r\n"
	- unix,linux,macos:"\n"
- os.name:当前系统名称
	- windows:nt
	- mac,unix,linux:posix

print(os.pardir)
print(os.linesep)

os.path模块,跟路径相关的模块

#coding=utf-8
import os.path as op
# abspath()将路径转换为绝对路径
# abselute绝对
# 格式:os.path.abspath("路径")
# 返回值:路径的绝对路径形式
# .点号,代表当前目录
# ..双点,代表父目录
'''
absp = op.abspath(".")
print(absp)
'''

# basename()获取路径中文件名部分
# 格式:os.path.basename(路径)
# 返回值:文件名字符串

# join()将多个路径拼成一个路径
# 格式:os.path.join(路径1,路径2)
# 返回值:组合之后的新路径字符串
bd = "\"
fn = "\"
p = op.join(bd, fn)
print(p)

# split()将路径切割为文件夹部分和当前文件部分
# 格式:os.path.split(路径)
# 返回值:路径和文件名组成的元组
d,p = op.split("路径")
print(d,p)

# isdir()检测是否是目录
# 格式:os.path.isdir(路径)
# 返回值:布尔值

# exists()检测文件是否存在
# os.path.exists(路径)
# 返回值:布尔值

shutil模块

#coding=gbk
import shutil,os,os.path
# copy()复制文件
# 格式:shutil.copy(来源路径,目标路径)
# 返回值:返回目标路径
# 拷贝的同时,可以给文件重命名
'''
file_dir = "F:\\作业" #设置路径
class_name = "jjc" #目标文件名
file_list = os.listdir(file_dir)#当前文件夹下的所有文件

for image in file_list:
	if image == "tui.jpg":
		if os.path.exists(os.path.join(file_dir,class_name)):
			shutil.copy(os.path.join(file_dir,image),os.path.join(file_dir,class_name))
		else:
			os.makedirs(os.path.join(file_dir,class_name))
			shutil.copy(os.path.join(file_dir,image),os.path.join(file_dir,class_name))
'''
# copy2() 复制文件,保留原数据(文件信息)
# 格式:shutil.copy2(来源路径,目标路径)
# 返回值:返回目标路径
# 注意:copy和copy2的唯一区别在于copy2复制文件时保留原数据

# copyfile()将一个文件中的内容复制到另外一个文件中,目标内容将被删除
# 格式:shutil.copyfile('源路径','目标路径')
# 返回值:
'''
shutil.copyfile("jjc.txt","bu.txt")
'''

# move()移动文件/文件夹
# 格式:shutil.move(源路径,目标路径)
# 返回值:目标路径
'''
t = shutil.move("F:\\作业\\tui.jpg","F:\\")
print(t)
'''
归档和压缩
  • 归档:把多个文件或者文件夹合并到一个文件当中
  • 压缩:用算法把多个文件或者文件夹无损或者有损合并到一个文件当中
# make_archive()归档操作
# 格式:shutil.make_archive("归档之后的目录和文件名","后缀","需要归档的文件夹")
# 返回值:归档之后的地址
'''
rst = shutil.make_archive("F:\\作业\\bu","zip","F:\\作业\\jjc")
print(rst)
'''
# unpack_archive()解包操作
# 格式:shutil.unpack_archive("归档文件地址","解包之后的地址")
# 返回值:解包之后的地址

zip - 压缩包

  • 模块名称叫 zipfile
import zipfile
zf = zipfile.ZipFile("F:\\作业\\bu.zip")
# ZipFile.getinfo(name):
# 获取zip文档内指定文件的信息,返回一个zipfile.ZipInfo对象,它包括文件的详细信息

rst = zf.getinfo("tui.jpg")
print(rst)

# ZipFile。namelist()
# 获取zip文档内所有文件的名称列表

nl = zf.namelist()
print(nl)

# ZipFile.extractall([path[,members[,pwd]]])

random

  • 随机数
  • 所有的随机模块都是伪随机
#coding=gbk

import random
# random()获取0-1之间的随机小数
# 格式:random.random()
# 返回值:随机0-1之间的小数
'''
print(int(100*random.random()))
'''
# 0-100的随机数

# choice()随机返回列表中的某个值
# 格式;random.choice(序列)
# 返回值:序列中的某个值
'''
l =[str(i)+"haha" for i in range(10)]
rst = random.choice(l)
print(rst)
'''
# shuffle()随机打乱列表
# 格式:random.shufle(列表)
# 返回值:打乱顺序之后的列表
'''
l1 =[i for i in range(10)]
print(l1)

random.shuffle(l1)
print(l1)
'''

# random.randint(a,b):返回一个a到b之间的随机整数,包含a和b
'''
print(random.randint(0,100))
'''

log模块

posted @ 2019-02-17 20:44  Rener  阅读(162)  评论(0编辑  收藏  举报