zoukankan      html  css  js  c++  java
  • Python9-模块1-day19

    在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
    1.namedtuple: 生成可以使用名字来访问元素内容的tuple
    2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
    3.Counter: 计数器,主要用来计数
    4.OrderedDict: 有序字典
    5.defaultdict: 带有默认值的字典

    namedtuple

    from collections import namedtuple
    Point = namedtuple('point',['x','y','z'])
    p1 = Point(3,2,1)
    p2 = Point(1,2,3)
    print(p1.x)
    print(p1.y)
    print(p1)
    print(p2.x)
    print(p2.y)
    print(p2)
    Card = namedtuple('card',['suits','number'])
    c1 = Card('红心',2)
    print(c1)
    print(c1.number)
    print(c1.suits)

    deque

    from collections import deque
    dq = deque([1,2])
    dq .append('a')  #从后面放数据  [1,2,'a']
    dq .appendleft('b')   #从前面放数据['b',1,2,'a']
    dq.insert(2,3)     #['b',1,3,2,'a']
    print(dq.pop())       #从后面取数据
    print(dq .popleft())  #从前面取数据
    
    
    a
    b

    # OrderedDict

    from collections import OrderedDict
    d = dict([('a', 1), ('b', 2), ('c', 3)])
    # dict的Key是无序的  {'a': 1, 'c': 3, 'b': 2}
    od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    print(od)
    # OrderedDict的Key是有序的
    
    OrderedDict([('a', 1), ('b', 2), ('c', 3)])

    # defaultdict

    from collections import defaultdict
    values = [11, 22, 33,44,55,66,77,88,99,90]
    my_dict = defaultdict(list)
    for value in  values:
        if value>66:
            my_dict['k1'].append(value)
        else:
            my_dict['k2'].append(value)

    使dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict

    >>> from collections import defaultdict
    >>> dd = defaultdict(lambda: 'N/A')
    >>> dd['key1'] = 'abc'
    >>> dd['key1'] # key1存在
    'abc'
    >>> dd['key2'] # key2不存在,返回默认值
    'N/A'

     Time模块

    '''
    表示时间的三种方式

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

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

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

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

    字符串---格式化时间:给人看的
    时间戳时间---float时间,给计算机看的
    结构化时间---元祖:计算用的

    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 当前时区的名称
    %% %号本身
    '''
    # import time
    # time.sleep(100)
    # print(time.time())
    # print(time.strftime("%Y-%m-%d %X"))
    # print(time.strftime("%Y-%m-%d %X"))
    # print(time.strftime("%Y-%m-%d %H-%M-%S")) #year month day HOUR MINUTE SECOND
    # print(time.strftime("%Y/%m/%d %b %a %H-%M-%S %j")) #year month day HOUR MINUTE SECOND
    # struct_time = time.localtime()
    # print(struct_time)
    # print(struct_time.tm_year)

    import time
    #时间戳和结构化时间
    # t = time.time()
    # print(t)
    # print(time.localtime(3049063158))
    # print(time.gmtime(t))
    # print(time.mktime(time.localtime()))
    #结构化时间-->字符串时间
    # print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(3000000000)))
    # #字符串时间-->结构化时间
    # print(time.strptime("2000-03-16","%Y-%m-%d"))
    #结构化时间 --> %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 %b %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'

    random模块
    import random
    #随机小数
    # random.random() # 大于0且小于1之间的小数
    # 0.7664338663654585
    # random.uniform(1,3) #大于1小于3的小数
    # 1.6270147180533838
    #恒富:发红包

    #随机整数
    # random.randint(1,5) # 大于等于1且小于等于5之间的整数
    # random.randrange(1,10,2) # 大于等于1且小于10之间的奇数


    #随机选择一个返回
    # print(random.choice([1,'23',[4,5]])) # #1或者23或者[4,5]
    #随机选择多个返回,返回的个数为函数的第二个参数
    # random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合
    # [[4, 5], '23']


    #打乱列表顺序
    # item=[1,3,5,7,9]
    # random.shuffle(item) # 打乱次序
    # item
    # [5, 1, 3, 7, 9]
    # random.shuffle(item)
    # item
    # [5, 9, 7, 1, 3]

    # 生成随机验证码
    import random

    def v_code():
    code = ''
    for i in range(5):
    num=random.randint(0,9)
    alf=chr(random.randint(65,90))
    add=random.choice([num,alf])
    code="".join([code,str(add)])
    return code

    print(v_code())
    os模块
    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.system("bash command")  运行shell命令,直接显示
    os.popen("bash command).read()  运行shell命令,获取执行结果
    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
    os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
    
    
    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的大小
    # print(os.getcwd())
    # os.chdir(r'D:PythonPY9python')
    # print(os.getcwd())
    # print(os.curdir)
    # print(os.pardir)
    # os.makedirs('os1/os2')  #创建目录
    # os.removedirs('os1/os2')  #递归删除目录
    # os.mkdir('dirname')  #创建文件夹
    # os.rmdir('dirname')
    # print(os.listdir(r'D:/Python/PY/9python'))      #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    # print(os.stat('time模块.py') )   #获取文件/目录信息
    # print(os.sep)
    # os.system('dir')              #运行shell命令,直接显示
    # ret = os.popen('dir').read()  #运行shell命令,获取执行结果
    # print(ret)
    # print(os.path.split(os.getcwd()))   #将path分割成目录和文件名二元组返回
    # print(os.path.dirname(os.getcwd()))
    # print(os.path.isfile(r'D:/Python/PY/9python/py9-day19-模块1/os模块.py'))    #如果path是一个存在的文件,返回True。否则返回False
    # print(os.path.join(r'c:','user','local'))  #  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    # print(os.path.getatime(r'D:/Python/PY/9python/py9-day19-模块1/os模块.py'))  #返回path所指向的文件或者目录的最后访问时间
    #print(os.path.getmtime(r'D:/Python/PY/9python/py9-day19-模块1/os模块.py'))  #返回path所指向的文件或者目录的最后修改时间
    #print(os.path.getsize(os.path.join(os.getcwd(),'os模块.py'))) #返回path的大小

     sys模块

    import sys
    # print(sys.platform)   #返回操作系统平台名称
    # print(sys.version)    #获取Python解释程序的版本信息
    # sys.exit()     #退出程序,正常退出时exit(0),错误退出sys.exit(1)
    # print(sys.path)  #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    ret = sys.argv
    name = ret[1]
    pwd = ret[2]
    if name == 'tim' and pwd =='tim123':
        print('login on')
    else:
        print('fail')
        sys.exit()
    print('gogog')
  • 相关阅读:
    Matlab中使用Java api画图图形并保存为jpeg格式
    基于注解的Mybatis mapper 接口注意事项
    Chap 2 Representing and Manipulating Information (CS:APP)
    设计模式之享元模式
    辛星浅析Linux中的postfix
    ZOJ 1364 Machine Schedule(二分图最大匹配)
    Scrapy系列教程(3)------Spider(爬虫核心,定义链接关系和网页信息抽取)
    恩布企业 IM iOS端 1.1 公布, 开源手机 IM
    leetcode_Power of Two_easy
    小强的HTML5移动开发之路(45)——汇率计算器【1】
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10347234.html
Copyright © 2011-2022 走看看