• day 23 模块2


    1.namedtuple
        命名元组  -> 类似创建一个类
    from collections import namedtuple
     
    # 类
    p = namedtuple("Point", ["x", "y","z"])
    # 对象
    p1 = p(10, 20,30)
    print(p1)
     
    print(p1.x)  #10
    print(p1.y)  #20
    2.os模块
         主要是针对操作系统
         一般用来操作文件系统
       os.makedirs() 可以一次性创建多级目录
       os.rmdir() 删除指定一个文件夹
    import os
     
    #必须要记住.很常用
    os.makedirs("baby/安哥拉/特斯拉/黄晓明") # 可以一次性创建多级目录
     
    os.mkdir("hyfzxxlvb") # 上层文件夹必须存在
     
     
    os.removedirs("baby/安哥拉/特斯拉/黄晓明") # 可以帮我们删除当前这个目录级中的所有空文件夹
    #需要记住
    os.rmdir("baby/baobao/baby/黄晓明") # 指定文件夹删除
     
    os.system("dir")
    print(os.popen("dir").read()) # 执行shell脚本或者cmd命令
     
    print(os.getcwd()) #  当前程序运行的文件夹  D:python_workspace_s18day23 内置模块02
     
    os.chdir("baby") # 改变工作目录
     
    print(os.getcwd())
    f = open("../userinfo", mode="r", encoding="utf-8")
    for line in f:
        print(line)
       
    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.dirname()  获取到文件的文件夹
    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的⼤⼩
     # 特殊属性:
     os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/" 
    os.linesep 输出当前平台使⽤的⾏终⽌符,win下为" ",Linux下为" " 
    os.pathsep 输出⽤于分割⽂件路径的字符串 win下为;,Linux下为: 
    os.name 输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix'
     
    print(os.path.abspath('userinfo') ) # 把相对路径改成绝对路径
    print(os.path.split(r"D:python_workspace_s18day23 内置模块02userinfo")) #将路径分割成目录和文件名二元组返回
    print(os.path.dirname(r"D:python_workspace_s18day23 内置模块02userinfo"))  #返回目录
    print(os.path.basename(r"D:python_workspace_s18day23 内置模块02userinfo"))  #返回文件名
     
    print(os.path.exists(r"D:python_workspace_s18day23 内置模块02") ) # 存在?如果路径存在文件夹,返回True;如果不存在,返回Flase
    3.sys模块
          主要针对的是我们的python解释器
          sys.path(重点中的重点)   模块的查找路径
    sys.argv 命令⾏参数List,第⼀个元素是程序本身路径
    sys.exit(n) 退出程序,正常退出时exit(0),错误退出
    sys.exit(1) sys.version 获取Python解释程序的版本信息 
    sys.path 返回模块的搜索路径,初始化时使⽤PYTHONPATH环境变量的值 
    sys.platform 返回操作系统平台名称
    import sys
    # print(sys.platform)
    print(sys.path)  # 找模块的. 必须要记住. 模块的搜索路径
    sys.path.append("D:\python_workspace_s18\day21 继承")
    4.序列化
         把一个队形拍散叫序列化
         把拍散的内容整整合回对象,叫反序列化
    5.pickle(重点)
        把一个对象进行序列化操作
      1. dumps( ) 把对象序列化成字节
      2.loads()  把字节反序列化成对象
     
      1.dump( ) 把对象序列化写入文件
      2. load ()  把文件中的内容反序列化成对象
    import pickle
    #
    class Elephant:
        def __init__(self, name, weight, height):
            self.name = name
            self.weight = weight
            self.height = height
     
        def tiaoxi(self):
            print(f"{self.name}大象特别喜欢调戏人")
     
    e = Elephant("宝宝", "185T", "175")
    # e.tiaoxi()
    #
    # # 序列化
    bs = pickle.dumps(e) # 把对象进行序列化
    print(bs)
     
    # bs = b'x80x03c__main__ Elephant qx00)x81qx01}qx02(Xx04x00x00x00nameqx03Xx06x00x00x00xe5xaex9dxe5xaex9dqx04Xx06x00x00x00weightqx05Xx04x00x00x00185Tqx06Xx06x00x00x00heightqx07Xx03x00x00x00175qx08ub.'
    # 发序列化
    dx = pickle.loads(bs) # 发序列化. 得到的是大象
    dx.tiaoxi()
     
    e1 = Elephant("宝宝", "185T", "175")
    e2 = Elephant("宝贝", "120T", "120")
    f = open("大象", mode="wb")
    # 这也是序列化
    pickle.dump(e1, f) # 没有s的这个方法是把对象打散写入到文件, 序列化的内容不是给人看的
    pickle.dump(e2, f) # 没有s的这个方法是把对象打散写入到文件, 序列化的内容不是给人看的
     
    f = open("大象", mode="rb")
    while 1:
        try:
            obj = pickle.load(f)
            obj.tiaoxi()
        except Exception:
            break
     
     
     
    e1 = Elephant("宝宝", "185T", "175")
    e2 = Elephant("宝贝", "120T", "120")
     
    lst = [e1, e2]
     
    pickle.dump(lst, open("大象", mode="wb"))
     
     
    lst = pickle.load(open("大象", mode="rb"))
    for dx in lst:
        dx.tiaoxi()
    6.json(重点中的重点)
      json可以认为是python中的字典.有一点点的不一样:
     python: True, False,None
     json :  true, false,null
    1. dumps( ) 把对象序列化成json
      2.loads()  把json反序列化成对象
     
      1.dump( ) 把对象序列化写入文件
      2. load ()  把文件中的内容反序列化成对象
    import json
     
    dic = {"baby":None, "hxm":False, "syy":"史杨杨"}
     
    s = json.dumps(dic, ensure_ascii=False) # json处理中文的问题
    print(s)
     
    d = json.loads('{"baby": null, "hxm": false, "syy": "史杨杨"}')
    print(d['baby'])
     
    f = open("baby.json", mode="w", encoding="utf-8")
    json.dump({"baby":None, "hxm":False, "syy":"史杨杨"}, f, ensure_ascii=False)
     
    f = open("baby.json", mode="r", encoding="utf-8")
    obj = json.load(f)
    print(obj)
     
  • 相关阅读:
    apache性能测试工具
    redis和memcacahe、mongoDB的区别
    redis 安装
    redis介绍
    svn基本命令
    变量
    redis持久化有几种.如何配置
    Sundy_Android开发深入浅出和高级开发视频教程
    VC++ MFC类库基础(55讲全)
    从C++起步到MFC实战VC++软件工程师高端培训 视频保存在 播音员的网盘中
  • 原文地址:https://www.cnblogs.com/yanghongtao/p/10187296.html
Copyright © 2020-2023  润新知