zoukankan      html  css  js  c++  java
  • day 16

    day 16 包 os/sys/json/loggin模块

    1.包

    1. 什么是包;

      包是模块的一种形式,包的本质就是一个含有__init__.py文件的文件夹

    2. 为什么要有包;

      在未来扩展模块功能时,不改变模块名和用法。提高模块设计者对模块的管理和维护的便利性

    3. 如何使用包

      1. 模块和包

        导入模块发生的三件事

        1. 创建一个包名的名称空间
        2. 执行包内的.py文件,将执行过程中产生的名字存放于名称空间中
        3. 在当前执行文件中拿到一个名字aaa,aaa是指向包的名称空间

        导入包发生的三件事:

        1. 创建一个包的名称空间
        2. 由于包是一个文件夹,无法执行包,因此执行包下的.py文件,将执行过程中产生的名字存放于包名称空间中(即包名称空间中存放的名字都是来自于.py)
        3. 在当前执行文件中拿到一个名字aaa,aaa是指向包的名称空间的

        导入包就是在导入包下的.py,并且可以使用以下两种方式导入:

        1. import ...
        2. from ... import...
      2. 扩展模块功能

      02.os模块 与操作系统交互、控制文件/文件夹

      1.对文件操作

      1. 判断是否为文件

        res = os.path.isfile(r'/Users/luocongyu/Downloads/百度网盘/上课数据/9月/day 16/01 os模块.py')
        print(res)
        
      2. 删除文件remove

        os.remove(r'/Users/luocongyu/Downloads/百度网盘/上课数据/9月/day 16/01 os模块.py')
        
      3. 重命名文件

        os.rename(r'目标文件',r'新名字')
        

      2.对文件夹操作

      1. 判断是否为文件夹

        res=os.path.isdir(r'文件路径')
        print(res)
        
      2. 创建文件夹

        if not os.path.exists(r'路径') # 先判断是否有该文件
        os.mkdir(r'路径')
        
      3. 删除文件夹

        os.rmdir(r'路径')
        
      4. 列出文件夹内所有文件

        res=os.listdir(r'路径')
        print(res)
        
      5. 列出当前文件路径(__file__ pycharm独有)

        print(file) # 尽量用这个
        res = os.path.abspath(__file__) # 根据不同操作系统,更换不同的或/
        print(res)
        
      6. 列出文件夹所在的位置;通过嵌套得到上层文件夹名

        res = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
        print(res)
        
      7. 判断路径是否存在

      res = os.path.esists(r'/Users/luocongyu/Downloads/百度网盘/上课数据/9月/day 16/01 os模块.py')
      print(res)
      

      03.sys模块;与python解释器交互

      1. 最常用,当python解释器以命令行式运行时,接受多余的参数

        res = sys.argv
        print(res)
        
      2. 拿到当前导入的模块

        print(sys.modules.keys())
        
      3. 了解

        print(sys.api_version)
        
        print(sys.copyright)
        
        print(sys.version)
        
        print(sys.hexversion)
        

      04.json模块;实现跨平台数据交互,json串

      json模块可转换的内容有

      pickle模块使用方法与json模块相同

      1. 序列化;将python代码转换为json格式的字符串

        dic=[1,2,3]  
        res=json.dumps(dic)  # 存储在内存中
        print(type(res),res)
        
        # 将字典存储到.json文件中
        dic = {'a':True,'b':Fales}
        import json
        with open('text.json','w',encoding='utf-8') as fw:
          json.dump(dic,fw)
        
      2. 反序列化;将json格式的数据转换为python数据类型

        res = json.loads(res)  # 存储在内存中
        print(type(res), res)
        
        #将文件中的json窜读取出来
        with open('test.json', 'r', encoding='utf8') as fr:
            dic = json.load(fr)
            print(type(dic), dic)
        

        用json存储函数的话只能存储函数对象,无法存储函数内容

    05.logging模块;生成日志

    1. 配置logger对象

      import logger
      nick_logger = logging.Logger('nick')
      json_logger = logging.Logger('jason')
      
    2. 配置日志格式

      formmater1 = logging.Formatter('%(asctime)s - %(name)s -%(thread)d - %(levelname)s -%(module)s:  %(message)s',
                                     datefmt='%Y-%m-%d %H:%M:%S %p ', )
      
      formmater2 = logging.Formatter('%(asctime)s :  %(message)s',
                                     datefmt='%Y-%m-%d %H:%M:%S %p', )
      
      formmater3 = logging.Formatter('%(name)s %(message)s', )
      
    3. 配置handler ——>往文件打印or往终端打印

      h1 = logging.FileHandler('nick.log')
      h2 = logging.FileHandler('json.log')
      sm = logging.StreamHandler()
      
    4. 把handler绑定给logger对象

    5. nick_logger.addHandler(h1)
      nick_logger.addHandler(sm)
      json_logger.addHandler(h2)
      
    6. 直接使用

      nick_logger.info(f'nick 购买 变形金刚 4个')
      
  • 相关阅读:
    css资料汇总
    typescript 点滴
    vue-cli3点滴
    item2的使用方法推介
    rfc文档
    websocket
    g2
    常用的正则积累
    Vue-20190623点滴
    写一个webpackLoader
  • 原文地址:https://www.cnblogs.com/luocongyu/p/11600866.html
Copyright © 2011-2022 走看看