Python之路——内置模块总结

time模块

在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:

(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

(2)格式化的时间字符串(Format String): ‘1999-12-06’

  python中时间日期格式化符号:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

(3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等

索引(Index)属性(Attribute)值(Values)
0 tm_year(年) 比如2011
1 tm_mon(月) 1 - 12
2 tm_mday(日) 1 - 31
3 tm_hour(时) 0 - 23
4 tm_min(分) 0 - 59
5 tm_sec(秒) 0 - 60
6 tm_wday(weekday) 0 - 6(0表示周一)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为0
 1 import time
 2 # print(time.time())
 3 # print(time.strftime("%Y-%m-%d %H:%M:%S"))
 4 # print(time.strftime("%Y/%m/%d %H:%M:%S"))
 5 # t1 = 1500000000
 6 # t2 = 1600000000
 7 # st1 = time.localtime(t1)
 8 # st2 = time.localtime(t2)
 9 # st3 = time.localtime(t2-t1)
10 # t4 = time.strftime('%Y-%m-%d %H:%M:%S',(st3[0]-1970,*st3[1:]))
11 # print(st3.tm_yday,st3.tm_hour,st3.tm_min,st3.tm_sec)
12 
13 # def past_time(start_time = None):
14 #     start_time = start_time if start_time else time.time()
15 #     n = 0
16 #     while n<100:
17 #         time.sleep(0.5)
18 #         end_time = time.time()
19 #         st = time.gmtime(end_time-start_time)
20 #         print('year:%s day:%s %s:%s:%s'% (st.tm_year-1970,st.tm_yday-1,st.tm_hour,st.tm_min,st.tm_sec))
21 #         n += 1
22 # past_time()
23 
24 # 时间戳和结构化时间
25 # t = time.time()
26 # print(t)
27 # print(time.localtime(t))
28 # print(time.gmtime(t))
29 # print(time.mktime(time.localtime(t)))
30 # print(time.mktime(time.gmtime(8*3600)))
31 
32 # asctime([tuple]) -> string
33 # print(time.asctime())
34 # Convert a time tuple to a string, e.g. 'Sat Jun 06 16:26:11 1998'.
35 # When the time tuple is not present, current time as returned by localtime()
36 # is used.
37 
38 # strptime(string, format) -> struct_time
39 # Parse a string to a time tuple according to a format specification.
40 # print(time.strptime('2000-12.31','%Y-%m.%d'))
41 # # time.struct_time(tm_year=2000, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=366, tm_isdst=-1)
42 
43 # print(time.strftime('%m/%d/%Y %H:%M:%S',time.localtime(3000000000)))    # 01/24/2065 13:20:00

 

collections模块

在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。

1.namedtuple: 生成可以使用名字来访问元素内容的tuple

2.deque: 双端队列,可以快速的从另外一侧追加和推出对象

3.Counter: 计数器,主要用来计数

4.OrderedDict: 有序字典

5.defaultdict: 带有默认值的字典

 1 # from collections import namedtuple
 2 # Point = namedtuple('point',['x','y','z'])
 3 # p1 = Point(1,2,3)
 4 # print(p1)
 5 # print(p1.x,p1.y,p1.z)
 6 # p2 = Point(2,3,4)
 7 # print(p2.x,p2.y,p2.z)
 8 
 9 # Card = namedtuple('card',['suits','number'])
10 # print(Card.__doc__)
11 # c1 = Card('红桃',3)
12 # print(c1.suits,c1.number)
13 
14 # >>> from collections import namedtuple
15 # >>> Point = namedtuple('Point',['x','y'])
16 # >>> Point.__doc__
17 # 'Point(x, y)'
18 # >>> p = Point(11,y=22)
19 # >>> p[0] + p[1]
20 # 33
21 # >>> p.x+p.y
22 # 33
23 # >>> a,b = p
24 # >>> a,b
25 # (11, 22)
26 # >>> a
27 # 11
28 # >>> b
29 # 22
30 # >>> d = p._asdict()
31 # >>> print(d)
32 # OrderedDict([('x', 11), ('y', 22)])
33 # >>> print(d['x'])
34 # 11
35 # >>> Point(**d)
36 # Point(x=11, y=22)
37 # >>> p._replace(x=100)
38 # Point(x=100, y=22)
39 
40 # 队列
41 # import queue
42 # q = queue.Queue()
43 # # Create a queue object with a given maximum size.
44 # # If maxsize is <= 0, the queue size is infinite.
45 # q.put([1,2,3])
46 # q.put(5)
47 # q.put(6)
48 # print(q)
49 # print(q.qsize())
50 # print(q.get())
51 # print(q.get())
52 # print(q.get())
53 # print(q.qsize())
54 
55 # from collections import deque
56 # dq = deque('adgas465a')
57 # print(dq)
58 # # print(dq.pop())
59 # # print(dq.pop())
60 # dq.append('a')
61 # dq.append('b')
62 # dq.appendleft('c')
63 # print(dq)
64 # print(dq.pop())
65 # print(dq.popleft())
66 
67 # 有序字典
68 # from collections import OrderedDict
69 # od = OrderedDict([('a',1),('b',2),('c',3)])
70 # print(od)
71 # print(od['a'])
72 # print(od['b'])
73 # for k in od:
74 #     print(k,od[k])
75 
76 # ???????
77 # from collections import defaultdict
78 # d = defaultdict(lambda : 5)
79 # print(d)
80 
81 # from collections import Counter
82 # Counter(): Create a new, empty Counter object.  And if given, count elements
83         #    from an input iterable.  Or, initialize the count from another mapping
84         #    of elements to their counts.
85 # c = Counter('sdfjkasjdflajs')
86 # print(c)    # Counter({'s': 3, 'j': 3, 'a': 2, 'd': 2, 'f': 2, 'k': 1, 'l': 1})
87 # c['d'] -= 1
88 # print(c)    # Counter({'j': 3, 's': 3, 'f': 2, 'a': 2, 'k': 1, 'd': 1, 'l': 1})
89 
90 # c = Counter()                           # a new, empty counter
91 # print(c)    # Counter()
92 # c = Counter('gallahad')                 # a new counter from an iterable
93 # print(c)    # Counter({'a': 3, 'l': 2, 'd': 1, 'g': 1, 'h': 1})
94 # c = Counter({'a': 4, 'b': 2})           # a new counter from a mapping
95 # print(c)    # Counter({'a': 4, 'b': 2})
96 # c = Counter(a=4, b=2)                   # a new counter from keyword args
97 # print(c)    # Counter({'a': 4, 'b': 2})
View Code

defaultdict

 1 from collections import defaultdict
 2 
 3 values = [11, 22, 33,44,55,66,77,88,99,90]
 4 
 5 my_dict = defaultdict(list)
 6 
 7 for value in  values:
 8     if value>66:
 9         my_dict['k1'].append(value)
10     else:
11         my_dict['k2'].append(value)

 

random模块

 1 # import random
 2 # random.random() # Get the next random number in the range [0.0, 1.0)
 3 # print(random.random())
 4 
 5 # random.uniform(a,b) # Get a random number in the range [a, b) or [a, b] depending on rounding.
 6 # a = random.uniform(1,3)
 7 # print(a)
 8 
 9 # print(random.randint(1,5))  # 大于等于1小于等于5之间的整数
10 
11 # print(random.choice([1,'23',[4,5]]))    # 1或者23或者[4,5]
12 # print(random.choice(1)) # TypeError: object of type 'int' has no len()
13 
14 # print(random.sample([1,'23',[4,5]],2)) # 随机返回[1,'23',[4,5]]中的两个元素,返回的是一个列表
15 #
16 # print(random.sample(list({'k1':'v1','k2':'v2'}),2)) # ['k1', 'k2']
17 
18 # 打乱列表顺序
19 # item = [1,3,5,7,9]
20 # random.shuffle(item)
21 # print(item)
22 
23 # 生成验证码
24 # import random
25 # def v_code(n=5):
26 #     code = ''
27 #     for i in range(n):
28 #         num = random.randint(0,9)
29 #         alf = chr(random.randint(65,90))
30 #         add = random.choice([num,alf])
31 #         code += str(add)
32 #     return code
33 # print(v_code())
34 
35 # import random
36 # def v_code(n=5):
37 #     code = ''
38 #     for i in range(n):
39 #         num = random.randint(0,9)
40 #         alf = chr(random.randint(65,90))
41 #         add = random.choice([num,alf])
42 #         code  = ''.join([code,str(add)])
43 #     return code
44 # print(v_code())
View Code

 

os模块

 1 import os
 2 # print(os.getcwd())  # Return a unicode string representing the current working directory
 3 
 4 # os.chdir(r'E:\Python_Fullstack_S9')   # Change the current working directory to the specified path.
 5 # print(os.getcwd())
 6 
 7 # os.makedirs('dirname1/dirname2/dirname3')
 8 # os.removedirs('dirname1/dirname2/dirname3')
 9 # os.mkdir('dirname1/dirname2/dirname3')
10 
11 # print(os.listdir(r'E:\Python_Fullstack_S9'))
12 
13 # stat 系统调用时用来返回相关文件的系统状态信息的
14 # sta=os.stat('collections_module.py')
15 # print(sta)
16 # os.stat_result(st_mode=33206,           # 权限模式
17 #                st_ino=5910974510945247, # inode number
18 #                st_dev=284297630,        # device
19 #                st_nlink=1,              # number of hard links
20 #                st_uid=0,                # 所有用户的user id
21 #                st_gid=0,                # 所有用户的group id
22 #                st_size=1641,            # 文件的大小,以位为单位
23 #                st_atime=1515569689,     # 文件最后访问时间
24 #                st_mtime=1515569689,     # 文件最后修改时间
25 #                st_ctime=1515566554)     # 文件创建时间
26 
27 # python os.stat() 和 stat模块详解: http://www.cnblogs.com/maseng/p/3386140.html
28 
29 # print(os.sep)   # \
30 
31 # os.system('dir')
32 # ret = os.popen('dir').read()
33 # print(ret)
34 # print(os.environ)
35 
36 # print(os.getcwd())  # E:\Python_Fullstack_S9\Python_Fulldeck_S9_20171214\day19
37 # print(os.path.split(os.getcwd()))   # ('E:\\Python_Fullstack_S9\\Python_Fulldeck_S9_20171214', 'day19')
38 
39 # print(os.path.join(r'C:\Users\Administrator','user','local'))
40 # print(os.getcwd())
41 # print(os.path.getsize(os.path.join(os.getcwd(),'time_module.py')))
View Code

 

sys模块

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

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version        获取Python解释程序的版本信息
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
 1 import sys
 2 # print(sys.platform)
 3 # print(sys.version)
 4 
 5 # print(sys.path.clear())
 6 
 7 # ret = sys.argv
 8 # name = ret[1]
 9 # pwd = ret[2]
10 # if name == 'alex' and pwd == 'alex3714':
11 #     print('success')
12 # else:
13 #     print('error')
14 #     sys.exit()
15 # print('go on ....')

 序列化模块

 1 # import json
 2 # json: dumps and loads
 3 # dic = {"k":'v'}
 4 # dic = (1,2,3,4)
 5 # dic = {1:'a',2:'b',3:'c'}
 6 # s = json.dumps(dic)
 7 # print(dic,type(dic))
 8 # print(s,type(s))
 9 # dic2 = json.loads(s)
10 # print(dic2,type(dic2))
11 
12 # json: dump and load
13 # dic = {1:'a刘',2:'b严魁'}
14 # f = open('fff','w',encoding='utf-8')
15 # json.dump(dic,f,ensure_ascii=False)
16 # #If ``ensure_ascii`` is false, then the strings written to ``fp`` can
17 # #    contain non-ASCII characters if they appear in strings contained in
18 # #    ``obj``. Otherwise, all such characters are escaped in JSON strings.
19 # f.close()
20 
21 # f2 = open('fff','r',encoding='utf-8')
22 # dic2 = json.load(f2)
23 # f2.close()
24 # print(dic2,type(dic2))
25 
26 # l = [{'k1':1111},{'k2':2222},{'k3':3333}]
27 # f = open('file','w')
28 # import json
29 # for dic in l:
30 #     str_dic = json.dumps(dic)+'\n'
31 #     f.write(str_dic)
32 # f.close()
33 
34 # import json
35 # l = []
36 # f = open('file')
37 # for line in f:
38 #     d = json.loads(line.strip())
39 #     l.append(d)
40 # f.close()
41 # print(l)
View Code

 

re模块

 1 import re
 2 s = 'eva egon yuan'
 3 
 4 # ret = re.findall('a',s) # 返回所有满足匹配条件的结果,放在列表里
 5 # print(ret)  # ['a', 'a']
 6 
 7 # ret = re.search('a',s)
 8 # print(type(ret))    # <class '_sre.SRE_Match'>
 9 # print(ret.group())
10 # 函数会在字符串内查找模式匹配,直到找到第一个匹配,然后返回一个包含匹配信息的对象,
11 # 该对象通过group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
12 
13 # ret = re.match('a','abcabcabc').group() # 同search,不过只在字符串开始处进行匹配
14 # print(ret)    # a
15 # ret = re.match('','abcabcabc').group()
16 # print(ret)
17 
18 # ret = re.split('[ab]','abcd')   # 先按a进行分割,再按b进行分割
19 # print(ret)  # ['', '', 'cd']
20 
21 # ret = re.sub('\d','H','eva3egon4yuan4',1) # 将数字替换成H,参数1表示只替换一个
22 # print(ret)  # evaHegon4yuan4
23 # ret = re.sub('\d','H','eva3egon4yuan4')#默认替换全部
24 # print(ret)
25 
26 # ret = re.subn('\d','H','eva3egon4yuan4') # 将数字替换成H,返回元组:(替换的结果,替换了多少次)
27 # print(ret)  # ('evaHegonHyuanH', 3)
28 
29 # obj = re.compile('\d{3}') # 将正则表达式编译成一个正则表达式对象,规则要匹配的是3个数字
30 # ret = obj.search('abc123eeee')  # 正则表达式对象调用search,参数为待匹配的字符串
31 # print(ret.group())  # 123
32 
33 # obj = re.compile('\d{3}')
34 # ret = obj.findall('abc123ee123445df3452345245ee')
35 # print(ret)
36 
37 # ret = re.finditer('\d+','ds3sy4784a64gs65dfg4s65dg')    # 返回一个存放匹配结果的迭代器
38 # print(ret)  # <callable_iterator object at 0x00000253828B13C8>
39 # print(next(ret).group())
40 # print(next(ret).group())
41 # print([i.group() for i in ret])
42 
43 
44 # findall 的优先级查询:
45 # # ret = re.findall('www.(baidu|oldboy).com','www.oldboy.com')
46 # # print(ret)  # ['oldboy']`   这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可
47 #
48 # ret = re.findall('www.(?:baidu|oldboy).com','www.oldboy.com')
49 # print(ret)  # ['www.oldboy.com']
50 
51 # split的优先级查询
52 # ret = re.split('\d+','eva3egon4yuan')
53 # print(ret)  # ['eva', 'egon', 'yuan']   没有(),则没有保留所匹配的项
54 # ret = re.split('(\d+)','eva3egon4yuan')
55 # print(ret)  # ['eva', '3', 'egon', '4', 'yuan'] 有(),能够保留所匹配的项
56 
57 # 匹配标签
58 # ret = re.search("<(?P<tag_name>\w+)>\w+</(?P=tag_name)>",'<h1>hello</h1>')
59 # 可以在分组中利用?P<name>的形式给分组起名字
60 # 获取的匹配结果可以直接用group('名字')拿到对于的值
61 # print(ret.group())  # <h1>hello</h1>
62 # print(ret.group('tag_name'))  # h1
63 
64 # ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>")
65 # 如果不给组起名字,也可以用\序号来找到对应的组,表示要找到的内容和前面的组内容一致
66 # 获取的匹配结果可以直接用group(序号)拿到对应的值
67 # print(ret.group(1)) # h1
68 # print(ret.group())  # <h1>hello</h1>
69 # print(type(ret))
70 
71 # 匹配整数
72 # ret = re.findall(r"\d+","1-2*(60+(-40.35/5)-(-4*3))")
73 # print(ret)  # ['1', '2', '60', '40', '35', '5', '4', '3']
74 # ret = re.findall(r"-?\d+\.\d*|(-?\d+)","1-2*(60+(-40.35/5)-(-4*3))")
75 # print(ret)  # ['1', '-2', '60', '', '5', '-4', '3']
76 ret = re.findall(r"-?\d+","1-2*(60+(-40.35/5)-(-4*3))")
77 print(ret)  # ['1', '-2', '60', '', '5', '-4', '3']
78 # ret.remove('')
79 # print(ret)  # ['1', '-2', '60', '5', '-4', '3']
80 
81 # 数字匹配
82 # 1、 匹配一段文本中的每行的邮箱
83 #       http://blog.csdn.net/make164492212/article/details/51656638
84 #
85 # 2、 匹配一段文本中的每行的时间字符串,比如:‘1990-07-12’;
86 #
87 #    分别取出1年的12个月(^(0?[1-9]|1[0-2])$)、
88 #    一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$
89 #
90 # 3、 匹配qq号。(腾讯QQ号从10000开始)  [1,9][0,9]{4,}
91 #
92 # 4、 匹配一个浮点数。       ^(-?\d+)(\.\d+)?$   或者  -?\d+\.?\d*
93 # ret = re.findall('-?\d+\.?\d*',"-1.35")
94 # print(ret)
95 #
96 # 5、 匹配汉字。             ^[\u4e00-\u9fa5]{0,}$
97 #
98 # 6、 匹配出所有整数
View Code

 

posted @ 2018-01-10 20:26  liuyankui163  阅读(337)  评论(0编辑  收藏  举报