os/json/jsonpath三个模块

OS 模块

  1. 路径处理:
    • 基本方法

      os.getcwd()	# 获取当前工作目录路径
      os.path.exist(path)  # 判断该path是否存在
      os.path.join(path1,path2)  # 路径拼接
      os.chdir(dir_path)  # 切换到path目录下
      
      os.getatime(path)  # 获取该文件/目录最后的存取时间
      os.getctime(path)  # 获取该文件/目录的创建时间
      os.getmtime(path)  # 获取该文件/目录最后的修改时间
      
      os.path.split(path)   # 将path分割成目录和文件名二元组返回
          os.path.split('/Users/hui/Documents')
          ('/Users/hui', 'Documents')
      
    • 获取绝对路径

      absolute_path = os.path.abspath(__file__)
      print(absolute_path)
      
      import inspect
      absolute_path = inspect.getfile(inspect.currentframe())
      print(absolute_path)
      
  2. 文件处理
    • 基本方法

      os.listdir(dir_path)  # 获取目录路径中的所有的文件,包括隐藏文件
      os.path.isfile(path)   # 判断是否是文件,路径不存在/不是文件路径,均返回false
      
    • 获取 文件/目录 所在目录名称

      os.path.dirname(path) 
      os.path.dirname('/Users/hui/Documents')   
      '/Users/hui'
      
    • 分离文件拓展名

      os.path.splitext(path)  # 分离文件名与扩展名, 返回对象是一个tuple
          path_01 = 'E:\STH\Foobar2000\install.log'
          path_02 = 'E:\STH\Foobar2000'
          res_01 = os.path.splitext(path_01)
          res_02 = os.path.splitext(path_02)
          print(res_01)
          print(res_02)
          ('E:\\STH\\Foobar2000\\install', '.log')
          ('E:\\STH\\Foobar2000', '')
      
    • 删除文件

      if os.path.exists(file_path):
      	shutil.remove(file_path)  # 删除文件专用命令
      
  3. 目录处理
    • 基本方法

      os.path.isdir(path)   # 判断是否是目录,路径不存在/不是目录路径,均返回false
      
    • 删除目录

      if os.path.isdir(dir_path):
      	shutil.rmtree(dir_path)  # 删除目录专用命令,空/非空均可删除, 可以递归删除
      
  4. 执行命令
    • 方式一:

      os.system('bash command')  # 运行shell命令, 直接显示
      

json模块

  • 简介

    • josn字符串 通常用于web客户端与服务器之间数据交换,即字符串类型与python基本数据类型之间转换。
  • 两种常见的形式

    json_dict      '{"a":"b", "c":"d"}'
    json_list      '[1,2,3,4,5]'
    
  • 常用python对象与json字符串的转换方法:

    • json.loads(str_obj) # 用loads将json字符串转为python对象

      demo = '{"name": "jon", "age": 17, "city": "上海"}'
      
      json.loads(demo)  type(json.loads(demo))
      {'name': 'jon', 'age': 17, 'city': '上海'}  <class 'dict'>
      
    • Json.dumps(obj) # 用dumps将python对象编码成json字符串

      demo = {'name': 'jon', 'age': 17, 'city': '上海'}
      
      json.dumps(demo)
      {"name": "jon", "age": 17, "city": "\u4e0a\u6d77"}
      
      # 参数:indent 缩进, ensure_asii 正常显示中文
      json.dumps(demo, indent=2, ensure_ascii=False)   
      {
        "name": "jon",
        "age": 17,
        "city": "上海"
      }
      

jsonpath模块

  • 特点:
    • 接收的对象:dict
    • 返回的对象:list
    • .. 是模糊匹配
from jsonpath import jsonpath

dict_obj = {
    "error_code": 0,
    "stu_info": [
        {
            "id": 314,
            "name": "矿泉水",
            "sex": "男",
            "age": 18,
            "addr": "北京市昌平区",
            "grade": "摩羯座",
            "phone": "18317155663",
            "gold": 100,
            "cars": [
                {"car1": "bmw"},
                {"car2": "ben-z"},
            ]
        }
    ]
}

jsonpath(dict_obj, '$..car2')  # 模糊匹配
['ben-z'] 

result = jsonpath(dict_obj, '$.stu_info')  # 取到stu_info这里的所有内容
[[{'id': 314, 'name': '矿泉水', 'sex': '男', 'age': 18, 'addr': '北京市昌平区', 'grade': '摩羯座', 'phone': '18317155663', 'gold': 100, 'cars': [{'car1': 'bmw'}, {'car2': 'ben-z'}]}]]

result = jsonpath(dict_obj, '$.stu_info[0]')  # 取到stu_info里的第1个元素
[{'id': 314, 'name': '矿泉水', 'sex': '男', 'age': 18, 'addr': '北京市昌平区', 'grade': '摩羯座', 'phone': '18317155663', 'gold': 100, 'cars': [{'car1': 'bmw'}, {'car2': 'ben-z'}]}] 

result = jsonpath(dict_obj, '$.stu_info[0].id')  # 取到stu_info里的第1个元素中的id
[314]

posted @ 2020-12-07 07:51  疯狂列表推导式  阅读(103)  评论(0编辑  收藏  举报