zoukankan      html  css  js  c++  java
  • Python 中常见的模块

    一、时间 time 模块

      1.时间的表示类型分为3种:时间戳Timestamp、结构化时间Struct_time,字符串时间Format string

      time.time()  

        生成一个当前时间的时间戳。   结果:1502180997.5874085

      time.localtime() 生成一个本地时间的结构化时间 

        结果 :time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=16, tm_min=29, tm_sec=57, tm_wday=1, tm_yday=220, tm_isdst=0)

      time.strftime('%Y-%m-%d')   生成一个当前时间的字符串型的时间  ,里边的格式(参数)必须要指定格式

        结果:2017-08-08

      2.   3种时间类型的转化关系,以及转化方法。

      

       示例1:

     1 时间戳 与 结构化时间 之间的转化关系
     2 now = time.time()  # 生成一个时间戳
     3 now_struc = time.localtime(now)   # 把之间戳,转化成结构化的时间,当地时区。还有个是time.gmtime(),返回0时区的结构化时间。
     4 print(now_struc)
     5 
     6 now_1 = time.mktime(now_struc)   # 把结构化的时间,转化成对应的时间戳
     7 print(now_1)
     8 
     9 结果:
    10 time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=16, tm_min=40, tm_sec=53, tm_wday=1, tm_yday=220, tm_isdst=0)
    11 
    12 1502181653.0

      示例2

     1 # 结构化时间 与 字符型时间 的转化关系
     2 
     3 now_struc = time.localtime()  # 当前结构化的时间
     4 now_str = time.strftime('%Y-%m-%d %H:%M:%S',now_struc)  # 前一个参数指定要转化成的格式,第二个参数是要转化的结构化时间。
     5 
     6 print(now_struc)
     7 print(now_str)
     8 
     9 结果:
    10 time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=16, tm_min=50, tm_sec=8, tm_wday=1, tm_yday=220, tm_isdst=0)
    11 
    12 2017-08-08 16:50:08

    二、random随机模块

     1 import random
     2 print(random.random())   # 从0-1之间的小数
     3 
     4 print(random.uniform(1,3))  # 1-3之间的小数
     5 
     6 print(random.randint(1,100)) # 1-100之间的整数
     7 
     8 print(random.randrange(1,100)) # 1-100
     9 print(random.randrange(1,100,2)) # 增加了步长,注意:顾头不顾尾
    10 
    11 # 随机生成一个返回
    12 print(random.choice([1,2,'a','b']))  # 选择一个
    13 
    14 print(random.sample([1,2,'a','b'],3))  # 可选多个,这里是一次性选3个,
    15 
    16 # 打乱顺序
    17 li = list(range(1,20))
    18 print(li)
    19 random.shuffle(li)  # 打乱顺序
    20 print(li)

    验证码的练习:

    # 4位数的验证码,数字,字母组成。
    1
    li = [] 2 for i in range(4): 3 num = str(random.randint(0, 9)) 4 alpha = str(chr(random.randint(65, 90))) 5 ret = random.choice([num, alpha]) 6 li.append(ret) 7 ret = ''.join(li) 8 print(ret)

    三、OS模块

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

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

    四、sys模块

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

    1 sys.argv           命令行参数List,第一个元素是程序本身路径
    2 sys.exit(n)        退出程序,正常退出时exit(0)
    3 sys.version        获取Python解释程序的版本信息
    4 sys.maxint         最大的Int值
    5 sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    6 sys.platform       返回操作系统平台名称

    五、序列化模块 (json、pickle、shelve)

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

    序列化的目的:

      1.以某种存储形式使自定义对象持久化;

      2.将对象从一个地方传递到另一个地方;

      3.使程序更具维护性。

      

    JSON模块

    4个功能:dumpsloads    dumpload(跟文件相关)

     1 import json
     2 # 序列化----转化成字符串  json.dumps()
     3 dic = {'k1':[1,2,3],'k2':'v2','k3':'v3'}
     4 str_dic = json.dumps(dic)   # 序列化
     5 print(str_dic,type(str_dic))
     6 
     7 结果:
     8 {"k1": [1, 2, 3], "k2": "v2", "k3": "v3"} <class 'str'>
     9 注意:json序列化的字符串类型的字典中的字符串都是由“”表示的。
    10 
    11 
    12 # 反序列化   json.loads()
    13 dic1 = json.loads(str_dic)
    14 print(dic1,type(dic1))
    15 
    16 # 结果
    17 {'k1': [1, 2, 3], 'k2': 'v2', 'k3': 'v3'} <class 'dict'>

     json 中dump 与load 的用法

    1 # dump 与 load 的用法
    2 f = open('json_file','w')
    3 dic = {'k1':'v1','k2':'v2'}
    4 json.dump(dic,f)   # dump 方法接收一个文件句柄,直接将字典转换成json字符串写入,
    5 f.close()
    6 
    7 f = open('json_file')
    8 dic2 = json.load(f)   # load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回。
    9 f.close()

    pickle 模块

     1 import pickle
     2 
     3 dic = {'k1:':'v1','k2':'v2'}
     4 
     5 str_dic = pickle.dumps(dic)   # 序列化
     6 print(str_dic,type(str_dic))
     7 >>>b'x80x03}qx00(Xx03x00x00x00k1:qx01Xx02x00x00x00v1qx02Xx02x00x00x00k2qx03Xx02x00x00x00v2qx04u.' <class 'bytes'>
     8 
     9 
    10 dic2 = pickle.loads(str_dic)   # 反序列化
    11 print(dic2,type(dic2))
    12 
    13 >>>{'k1:': 'v1', 'k2': 'v2'} <class 'dict'>

    dump 和 load (跟文件相关)

    1 struct_time = time.localtime(1000000000)
    2 print(struct_time)
    3 f = open('pickle_file','wb')
    4 pickle.dump(struct_time,f)    # 序列化之后,写入文件.
    5 f.close()
    6 
    7 f = open('pickle_file','rb')
    8 struct_time2 = pickle.load(f)  # 反序列化,并读出来,
    9 print(struct_time2)

    shelve 模块

     1 import shelve
     2 f = shelve.open('shelve_file')
     3 f['key'] = {'int':10, 'float':9.5, 'string':'Sample data'}  #直接对文件句柄操作,就可以存入数据
     4 f.close()
     5 
     6 import shelve
     7 f1 = shelve.open('shelve_file')
     8 existing = f1['key']  #取出数据的时候也只需要直接用key获取即可,但是如果key不存在会报错
     9 f1.close()
    10 print(existing)
    11 
    12 shelve

    这个模块有个限制,它不支持多个应用同一时间往同一个DB进行写操作。所以当我们知道我们的应用如果只进行读操作,我们可以让shelve通过只读方式打开DB

     

  • 相关阅读:
    疫苗玻璃瓶行业,能发生国产替代吗
    马斯克是如何借力打力的?
    什么是分析立体主义
    这5家公司代表了高瓴资本眼中的科技产业未来
    玻尿酸之王华熙生物,为什么要做食品和饮料(下)
    ajax缺点
    babel转码器
    docker 缺陷
    MVVM中的vm双向监听和mvc的缺点
    mybatisPlus中的模糊查询问题
  • 原文地址:https://www.cnblogs.com/fengqing89/p/7307725.html
Copyright © 2011-2022 走看看