zoukankan      html  css  js  c++  java
  • Python学习week5

    模块:用来从逻辑上组织代码,本质是.py结尾的Python文件。

    Python Package(包): 用来从逻辑上组织模块,本质是文件夹,必须带有__init__.py文件。

    导入模块:

    1、import module_name1,module_name2......   导入模块文件,调用时用module_name.variable_name。

    2、from module_name import *    导入模块文件内的所有代码,调用时直接用模块内的变量名称。如果当前文件内有变量和模块文件内的变量同名的话,就近执行,哪个最近解释的就执行哪个。

    3、from module import func as func_module   使用as关键字区分当前文件内的变量和模块文件内的变量。

    4、from module import func as func_module1,func2 as func_module2

    推荐1、3、4方法。

    import module_name本质:把模块文件运行一遍,然后把模块文件内容赋值给模块文件名。调用格式:module_name.variable_name

    from module import func本质:解释模块中的func。调用格式:variable_name

    导入包:import package_name

    当前文件与package文件同级。

    导入包的本质:运行package目录下的__init__.py文件。


     模块分类:

    1、标准库,Python自带

    2、开源模块,第三方模块

    3、自定义模块


    time模块:

    时间戳:从1970年1月1日零时起至今的秒数;

    格式化时间:字符串表示时间,可以自定义格式;

    %Y:年

    %m:月

    %d:日

    %A:星期几

    %H:时

    %M:分

    %S:秒

    struct_time:元组方式表示时间,有9个元素

    不同时间表示方法之间的转化:

     time.time()
    

     返回时间戳模式的时间:

    1538570674.6409438
    

    time.localtime()
    

     返回元组形式的本地时间:

    time.struct_time(tm_year=2018, tm_mon=10, tm_mday=3, tm_hour=20, tm_min=45, tm_sec=45, tm_wday=2, tm_yday=276, tm_isdst=0)
    

    time.gmtime()
    

     返回元组形式的标准时间:

    time.struct_time(tm_year=2018, tm_mon=10, tm_mday=3, tm_hour=12, tm_min=45, tm_sec=55, tm_wday=2, tm_yday=276, tm_isdst=0)
    

    random模块:

    import random
    print(random.random())      #随机产生0-1之间的浮点数
    print(random.uniform(5,10))     #随机产生5-10之间的浮点数
    print(random.randrange(0,101,5))        #随机产生0-101且步长为5的整数
    print(random.choice(range(0,101,5)))    #随机产生0-101且步长为5的整数
    print(random.randint(0,10))     #随机产生0-10的整数,包括10
    print(random.choice('abcdefg123456789'))    #从序列中随机选择一个元素
    print(random.sample([1,2,3,4,5,6],2))       #从样本中随机选择2个元素,输出为list
    items=[1,2,3,4,5,6]
    random.shuffle(items)       #打乱items的排列顺序,改变items。
    print(items)

    其中,random.choice()和random.sample()参数均是序列。序列可以是list,tuple,string,不可以是字典。


    OS模块:

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
    os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
    os.curdir  返回当前目录: ('.')
    os.pardir  获取当前目录的父目录字符串名:('..')
    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.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    os.linesep    输出当前平台使用的行终止符,win下为"	
    ",Linux下为"
    "
    os.pathsep    输出用于分割文件路径的字符串
    os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    os.system("bash command")  运行shell命令,直接显示
    os.environ  获取系统环境变量
    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所指向的文件或者目录的最后修改时间
    

     sys模块:

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

     json和pickle模块:

    用于序列化的两个模块

    • json,用于字符串 和 python数据类型间进行转换
    • pickle,用于python特有的类型 和 python的数据类型间进行转换

    Json模块提供了四个功能:dumps、dump、loads、load

    pickle模块提供了四个功能:dumps、dump、loads、load


    shelve模块:

    shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。

    import shelve
    d = shelve.open('shelve_test')  # 打开一个文件
    name = ["alex", "rain", "test"]
    d["test"] = name  # 持久化列表
    d.close()
    

    读取数据:

    import shelve
    d=shelve.open("shelve_test")
    print(d.get('test'))
    输出:
    ['alex', 'rain', 'test']
    

    XML模块:

    现有xml文件内容如下:

    <?xml version="1.0"?>
    <data>
        <country name="Liechtenstein">
            <rank updated="yes">2</rank>
            <year>2008</year>
            <gdppc>141100</gdppc>
            <neighbor name="Austria" direction="E"/>
            <neighbor name="Switzerland" direction="W"/>
        </country>
        <country name="Singapore">
            <rank updated="yes">5</rank>
            <year>2011</year>
            <gdppc>59900</gdppc>
            <neighbor name="Malaysia" direction="N"/>
        </country>
        <country name="Panama">
            <rank updated="yes">69</rank>
            <year>2011</year>
            <gdppc>13600</gdppc>
            <neighbor name="Costa Rica" direction="W"/>
            <neighbor name="Colombia" direction="E"/>
        </country>
    </data>
    

     从此文件中获取信息:

    import xml.etree.ElementTree as ET
    tree = ET.parse("xmltest.xml")        #xmltest.xml是xml文件名
    root = tree.getroot()
    print(root.tag)
    # 遍历xml文档
    for child in root:
        print(child.tag, child.attrib)
        for i in child:
            print(i.tag, i.text,i.attrib)
    # 只遍历year 节点
    for node in root.iter('year'):
        print(node.tag, node.text)    
    

    修改xml文件:

    import xml.etree.ElementTree as ET
    tree = ET.parse("xmltest.xml")
    root = tree.getroot()
    # 修改
    for node in root.iter('year'):
        new_year = int(node.text) + 1
        node.text = str(new_year)
        node.set("updated", "yes")
    tree.write("xmltest.xml")
    # 删除node
    for country in root.findall('country'):
        rank = int(country.find('rank').text)
        if rank > 50:
            root.remove(country)
    tree.write('output.xml')
    

     创建xml文件:

    import xml.etree.ElementTree as ET
    new_xml = ET.Element("people")
    person1 = ET.SubElement(new_xml, "person1", attrib={"enrolled": "yes"})
    person1.text="刚田武"
    age = ET.SubElement(person1, "age", attrib={"checked": "no"})
    age.text = '23'
    sex = ET.SubElement(person1, "sex")
    sex.text="男"
    person2 = ET.SubElement(new_xml, "person2", attrib={"enrolled": "no"})
    person2.text="猪刚鬣"
    age = ET.SubElement(person2, "age")
    age.text = '22'
    sex = ET.SubElement(person2, "sex")
    sex.text="男"
    
    et = ET.ElementTree(new_xml)  # 生成文档对象
    et.write("朱二娃和基佬强.xml", encoding="utf-8", xml_declaration=True)
    

     生成的xml文件不会自动换行。

  • 相关阅读:
    BZOJ 1040 (ZJOI 2008) 骑士
    BZOJ 1037 (ZJOI 2008) 生日聚会
    ZJOI 2006 物流运输 bzoj1003
    ZJOI 2006 物流运输 bzoj1003
    NOI2001 炮兵阵地 洛谷2704
    NOI2001 炮兵阵地 洛谷2704
    JLOI 2013 卡牌游戏 bzoj3191
    JLOI 2013 卡牌游戏 bzoj3191
    Noip 2012 day2t1 同余方程
    bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  • 原文地址:https://www.cnblogs.com/zhhy236400/p/9735972.html
Copyright © 2011-2022 走看看