zoukankan      html  css  js  c++  java
  • python之其他模块的用法

    1.时间模块

      在Python中通常有三种表示时间的方式,分别是时间戳、元组、格式化的时间字符串。

      时间模块的常用方法

    time.sleep()
    #指定延迟时间
    time.time()
    #当前时间的时间戳

    python中表示时间的几种格式

    import time
    #导入时间模块
    time.time()
    #获取时间戳
    print(time.strftime("%Y-%M-%d %H-%M-%S"))
    #时间字符串
    time.localtime()
    #时间元组  将一个时间戳转化为当前时区struct_time

     小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

     几种格式之间的转化:

    #时间戳====>结构化时间
    #time.gmtime(时间戳)
    #time.localtime(时间戳) 当地时间
    
    # print(time.gmtime(1500000000)
    time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
    
    print(time.localtime(1500000000))
    time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
    
    #结构化时间=====>时间戳
    time.mktime()
    时间戳与结构化时间之间的转化
    #结构化时间 --> %a %b %d %H:%M:%S %Y串
    #time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
    time.asctime(time.localtime(1500000000))
    'Fri Jul 14 10:40:00 2017'
    time.asctime()
    'Mon Jul 24 15:18:33 2017'
    
    #%a %d %d %H:%M:%S %Y串 --> 结构化时间
    #time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
    time.ctime()
    'Mon Jul 24 15:19:07 2017'
    time.ctime(1500000000)
    'Fri Jul 14 10:40:00 2017'
    #结构化时间===>字符串时间
    time.strftime("%Y-%M-%d",time.localtime(1500000000))
    #2017-40-14
    
    #字符串时间=====>结构化时间
    print(time.strptime("2017-9-8","%Y-%m-%d"))
    #time.struct_time(tm_year=2017, tm_mon=9, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=251, tm_isdst=-1
    结构化时间与字符串时间之间的转化

    2.random模块

    #random模块
    import random
    #随机小数
    random.random()
    random.uniform(1,4)
    #随机整数
    random.randint(1,5)
    #随机选择一个返回
    re=random.choice([1,'23',[4,5]])  #返回1、23、[4,5]
    print(re)
    #随机选择多个返回
    ret=random.sample([23,[1,2,3]],2)
    print(ret)
    #打乱列表的顺序
    num=[1,2,3,4,5]
    random.shuffle(num)
    random模块

    练习:生成随机验证码

    name_l=list(range(10))
    name_tp_1=list(map(str,name_l))
    alph=[]
    for i in range(65,91):
        alph_1=chr(i)
        alph.append(alph_1)
    name_tp_1.extend(alph)
    list=[]
    for i in range(4):
        list.append(random.choice(name_tp_1))
    print(''.join(list))
    随机生成验证码

    3.sys模块

     sys模块是与python解释器交互的一个接口

    import sys
    sys.argv
    sys.exit()  #退出程序
    sys.version #获取python解释器版本信息
    sys.maxsize #最大的int值
    sys.path   #返回模块的搜索路径
    sys.platform  #返回操作平台
    sys模块

    4.序列化模块

    将原本的字典、列表等内容转换成一个字符串的过程叫做序列

     json模块与pickle模块

    首先谈谈json模块,用于字符串与python数据类型之间的转换。

    json模块提供了四个功能:dumps、dump、loads、load

    import json
    dic = {'k1':'v1','k2':'v2','k3':'v3'}
    str_dic=json.dumps(dic)  #序列化
    print(str_dic)
    
    #将一个字典转换成一个字符串
    #注意,json转换完的字符串类型的字典中的字符串是由""表示的
    
     dic=json.load(str_dic) #反序列化
    #将一个字符串转换成一个字典
    #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
    dumps和loads
    f=open('json_file','w')
    dic1={'k1':'v1','k2':'v2','k3':'v3'}
    json.dump(dic1,f)
    f.close()
    #dump接收一个文件句柄,直接将字典转化成json字符串写入文件
    
    f=open('json_file')
    dic2=json.load(f)
    f.close()
    print(dic2)
    #load接收文件句柄,直接将文件中的json字符串转化成数据结构返回
    load和dump

    pickle模块,用于python特有的类型 和 python的数据类型间进行转换

    pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load  (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化

    import pickle
    dic={'k1':'v1','k2':'v2','k3':'v3'}
    str_dic=pickle.dumps(dic)
    print(str_dic)
    #一串二进制
    dic2=pickle.loads(str_dic)
    print(dic2)
    #返回字典
    import time
    struc_time=time.localtime(1000000000)
    print(struc_time)
    f=open('pickle_file','wb')
    pickle.dump(struc_time,f)
    f.close()
    
    f=open('pickle_file','rb')
    struc_time2=pickle.load(f)
    print(struc_time.tm_year)
    pickle模块
    shelve模块,提供给我们一个open方法,用字典进行访问,使用起来和字典类似
    import shelve
    f=shelve.open('shelve_file')
    f['key']={'int':10,'float':2.1,'string':'egon'}
    f.close()
    #写入文件
    
    
    f1=shelve.open('shelve_file')
    exist=f1['key']
    f.close()
    print(exist)
    #将文件根据key值取出来
    shelve模块

    5.os模块

     os模块是与操作系统交互的一个接口

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
    os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
    os.curdir  返回当前目录: ('.')
    os.pardir  获取当前目录的父目录字符串名:('..')
    os.makedirs('dirname1/dirname2')    可生成多层递归目录
    os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
    os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
    os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
    os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    os.remove()  删除一个文件
    os.rename("oldname","newname")  重命名文件/目录
    os.stat('path/filename')  获取文件/目录信息
    os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    os.linesep    输出当前平台使用的行终止符,win下为"	
    ",Linux下为"
    "
    os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
    os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    os.system("bash command")  运行shell命令,直接显示
    os.popen("bash command)  运行shell命令,获取执行结果
    os.environ  获取系统环境变量
    
    
    os.path
    os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 
    os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。
                            即os.path.split(path)的第二个元素
    os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
    os.path.isabs(path)  如果path是绝对路径,返回True
    os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
    os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
    os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
    os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
    os.path.getsize(path) 返回path的大小

    i习题:

    生成随机验证码

    def myrandom():
        new_num_l = list(map(str,range(10)))
        alph_l = [chr(i) for i in range(65,91)]  #列表推导式
        new_num_l.extend(alph_l)
        ret_l = [random.choice(new_num_l) for i in range(4)]
        return ''.join(ret_l)
    print(myrandom())
    文艺青年版
  • 相关阅读:
    jquery选择器
    js中的闭包技术
    idea创建servlet不能创建:
    JSP页面不解析EL表达式的原因
    大对象数据LoB的应用
    缓冲流、转换流、序列化流相关流知识点
    jdk5.0新特性(注解)
    EKT相关知识(Class类对象的方法补充)
    java中调用存储过程或函数
    Java 缓冲流
  • 原文地址:https://www.cnblogs.com/moning/p/7307571.html
Copyright © 2011-2022 走看看