• 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_S9Python_Fulldeck_S9_20171214day19
    37 # print(os.path.split(os.getcwd()))   # ('E:\Python_Fullstack_S9\Python_Fulldeck_S9_20171214', 'day19')
    38 
    39 # print(os.path.join(r'C:UsersAdministrator','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)+'
    '
    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
  • 相关阅读:
    Use MusicBrainz in iOS(三)查询专辑的完整信息
    内存寻址一(分段)
    POJ 1018 Communication System (动态规划)
    利用Eclipse中的Maven构建Web项目(二)
    cocos2d-x2.2.3学习
    (排序算法整理)NEFU 30/32
    POJ 1066 昂贵的聘礼
    2014年腾讯暑假实习软件开发笔试题汇总
    Android学习之——自己搭建Http框架(1)
    C 语言之预处理 ---------文件包括
  • 原文地址:https://www.cnblogs.com/liuyankui163/p/8260618.html
Copyright © 2020-2023  润新知