zoukankan      html  css  js  c++  java
  • 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:"
    "
    	- unix,linux,macos:"
    "
    - 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模块

  • 相关阅读:
    哲学家进餐
    文件系统
    文件读写原理(转)
    数据库join种类
    http与https区别
    数字证书(转)
    B. Rebranding
    扩展欧几里德算法、证明及其应用
    CodeForces 7C Line
    UVALive 7147 World Cup
  • 原文地址:https://www.cnblogs.com/rener0424/p/10392564.html
Copyright © 2011-2022 走看看