• python大法好—模块 续


    1.sys模块

    sys模块的常见函数列表

    • sys.argv: 实现从程序外部向程序传递参数。

    • sys.exit([arg]): 程序中间的退出,arg=0为正常退出。

    • sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。

    • sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 )

    • sys.getfilesystemencoding(): 获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'.

    • sys.path: 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。

    • sys.platform: 获取当前系统平台。

    • sys.stdin,sys.stdout,sys.stderr: stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们

    sys.exit(n)

    功能:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0是正常退出,其他为异常)

    示例:exit.py

    import sys
    
    def exitfunc(value):
        print value
        sys.exit(0)
    
    print "hello"
    
    try:
        sys.exit(1)
    except SystemExit,value:
        exitfunc(value)
    
    print "come?"

    sys.stdinstdoutstderr

    功能:stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们

    2.shutil模块

    高级的文件、文件夹、压缩包。处理模块

    1.shutil.copyfileobj(文件1,文件2):将文件1的数据覆盖copy给文件2。

    import shutil
    
    f1 = open("1.txt",encoding="utf-8")
    
    f2 = open("2.txt","w",encoding="utf-8")
    
    shutil.copyfileobj(f1,f2)

    2.shutil.copyfile(文件1,文件2):不用打开文件,直接用文件名进行覆盖copy。

    import shutil
    
    shutil.copyfile("1.txt","3.txt")

    3.shutil.copy(文件1,文件2):拷贝文件和权限都进行copy。

    4.shutil.copy2(文件1,文件2):拷贝了文件和状态信息。

    5..shutil.rmtree(目标目录):可以递归删除目录下的目录及文件。

    6.shutil.move(源文件,指定路径):递归移动一个文件。

    ...

    3.序列化模块

    序列化:序列化是指把内存里的数据类型转变成字符串,以使其可以存储到硬盘或通过网络传播到远程,因为硬盘或网络传输时只接受字符类型。

    pickle

    json

    都可以进行序列化

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。

    dumps和dump   序列化方法
           dumps只完成了序列化为str,
           dump必须传文件描述符,将序列化的str保存到文件中
    >>> import json
    >>> json.dumps([])    # dumps可以格式化所有的基本数据类型为字符串
    '[]'
    >>> json.dumps(1)    # 数字
    '1'
    >>> json.dumps('1')   # 字符串
    '"1"'
    >>> dict = {"name":"Tom", "age":23}  
    >>> json.dumps(dict)     # 字典
    '{"name": "Tom", "age": 23}'

    loads和load  反序列化方法

           loads 只完成了反序列化,
           load 只接收文件描述符,完成了读取文件和反序列化
    >>> json.loads('{"name":"Tom", "age":23}')
    {'age': 23, 'name': 'Tom'}
    复制代码
    import json
    with open("test.json", "r", encoding='utf-8') as f:
        aa = json.loads(f.read())
        f.seek(0)
        bb = json.load(f)    # 与 json.loads(f.read())
    print(aa)
    print(bb)
    
    # 输出:
    {'name': 'Tom', 'age': 23}
    {'name': 'Tom', 'age': 23}

     1. json序列化方法:

              dumps:无文件操作            dump:序列化+写入文件

      2. json反序列化方法:

              loads:无文件操作              load: 读文件+反序列化

      3. json模块序列化的数据 更通用

          picle模块序列化的数据 仅python可用,但功能强大,可以序列号函数

    4.xml模块

    xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。从结构上,很像HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容。那么Python是如何处理XML语言文件的呢?下面一起来看看Python常用内置模块之xml模块吧。

    本文主要学习的ElementTree是python的XML处理模块,它提供了一个轻量级的对象模型。在使用ElementTree模块时,需要import xml.etree.ElementTree的操作。ElementTree表示整个XML节点树,而Element表示节点数中的一个单独的节点。

    ElementTree(tag),其中tag表示根节点,初始化一个ElementTree对象。

    Element(tag, attrib={}, **extra)函数用来构造XML的一个根节点,其中tag表示根节点的名称,attrib是一个可选项,表示节点的属性。

    SubElement(parent, tag, attrib={}, **extra)用来构造一个已经存在的节点的子节点 Element.text和SubElement.text表示element对象的额外的内容属性,Element.tag和Element.attrib分别表示element对象的标签和属性。

    ElementTree.write(file, encoding='us-ascii', xml_declaration=None, default_namespace=None, method='xml'),函数新建一个XML文件,并且将节点数数据写入XML文件中。

    from xml.etree import ElementTree as ET
    def build_sitemap():
        urlset = ET.Element("urlset")   #设置一个根节点,标签为urlset
        url = ET.SubElement(urlset,"url")   #在根节点urlset下建立子节点
        loc = ET.SubElement(url,"loc")
        loc.text = "http://www/baidu.com"
        lastmod = ET.SubElement(url,"lastmod")
        lastmod.text = "2017-10-10"
        changefreq = ET.SubElement(url,"changefreq")
        changefreq.text = "daily"
        priority = ET.SubElement(url,"priority")
        priority.text = "1.0"
        tree = ET.ElementTree(urlset)
        tree.write("sitemap.xml")
    if __name__ == '__main__':
        build_sitemap()
    

      

    ElementTree.parse(source, parser=None),将xml文件加载并返回ElementTree对象。parser是一个可选的参数,如果为空,则默认使用标准的XMLParser解析器。

    ElementTree.getroot(),得到根节点。返回根节点的element对象。

    Element.remove(tag),删除root下名称为tag的子节点 以下函数,ElementTree和Element的对象都包含。

    find(match),得到第一个匹配match的子节点,match可以是一个标签名称或者是路径。返回个element findtext(match,default=None),得到第一个配置的match的element的内容 findall(match),得到匹配match下的所有的子节点,match可以是一个标签或者是路径,它会返回一个list,包含匹配的elements的信息 iter(tag),创建一个以当前节点为根节点的iterator。

    from xml.etree import ElementTree as ET
    tree = ET.parse("sitemap.xml")
    url = tree.find("url")
    for rank in tree.iter('loc'):
        rank.text = "http://www.adminba.com"
    tree.write("sitemap.xml")
  • 相关阅读:
    LCS LIS
    补个线段树
    洛谷1522
    AC自动机
    WF 2017 I
    WF2017 E
    最小生成树计数 基尔霍夫矩阵树定理
    bitonic tour luogu1523
    code+11月月赛
    模拟退火
  • 原文地址:https://www.cnblogs.com/lchh/p/9415893.html
Copyright © 2020-2023  润新知