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下为"\t\n",Linux下为"\n"
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个功能:dumps\loads    dump\load(跟文件相关)

 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'\x80\x03}q\x00(X\x03\x00\x00\x00k1:q\x01X\x02\x00\x00\x00v1q\x02X\x02\x00\x00\x00k2q\x03X\x02\x00\x00\x00v2q\x04u.' <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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2017-08-08 19:00  Mr_Bai  阅读(258)  评论(0编辑  收藏  举报

导航