• python笔记(14)--内置模块(json重要)


    内容目录

    • 模块知识
    • 内置模块
      • time
      • datetime
      • json(重要)
      • 其他

    内容回顾&作业题

    重要知识点

    • 构造字典和函数对应关系,避免重复的if...else

    • a=1 b=2 ==> a , b = b , a

    • 装饰器

    • 找文件路径

    • 脚本参数

    • sys.exit(0)

    • range / xrange

    • 读大文件

    今日内容

    1.模块基本知识

    • 内置模块,python内部提供的功能

      #示例:
      import sys
      print(sys.argv)
      
    • 第三方模块,下载/安装/使用

      • C:python36Scriptspip.exe包管理工具

        #把pip.exe 所在的目录添加到环境变量中。环境变量-系统变量-path里面
        pip install 要安装的模块名称	#例如   cmd中运行pip install xlrd,该Excel模块就可以用了
        
    • 安装时错误:

      • python更改了名字,所以pip需要重新安装。使用命令“python36 -m pip install --upgrade pip”

      • 此时pip版本有问题,应升到最近版本,使用此命令python36 -m pip install --upgrade pip

      • 网络问题,网速慢获取慢,等网络恢复后重新安装

      • 安装好的第三方模块都在C:python36Libsite-packages,可以检查需要安装的模块是否齐全

      • 内置模块都在C:python36Lib中

      • 安装完成后,如果导入不成功。

        • 重启pycharm,查看底部进度条,如果没有就重启
        • 有可能安装错误,装到本机其他python版本中了
    • 自定义模块

      • xxxx.py(自己写的模块)

        def f1():
            print('f1')
        
        def f2():
            print('f2')
        
      • x1.py

        #调用自定义模块
        import xxxx
        xxxx.f1()
        xxxx.f2()
        
      • 运行

        python x1.py
        

    2.内置模块

    2.1 os

    • os.mkdir:(创建目录只能生成一级目录)

    • os.makedirs:(创建目录以及子目录)

      import os
      file_path = r'dbxxxoexet.txt'        #需要写入的文件路径
      
      file_folder = os.path.dirname(file_path)    #取上级目录
      if not os.path.exists(file_folder):         #判断如果没有上级目录,则创建目录
          os.makedirs(file_folder)
      with open(file_path,mode='w',encoding='utf-8')as f: #打开文件写入
          f.write('kljljlkj')
      
    • os.rename:重命名

      import os
      os.rename('db','sb')	#将文件夹的名称更改为'sb'
      
    • os.path.join

    • os.path.dirname

    • os.path.abspath

    • os.path.exists

    • os.stat('文件路径')

    • os.listdir

    • os.walk

    2.2 sys

    • sys.argv

    • sys.path:默认python去导入模块时,会按照sys.path中的路径挨个查找。

      • sys.path默认路径是当前要执行的文件目录下,如果要执行其他盘符或文件夹的模块,需用到这个功能
      • 该功能与from 模块 import 函数相类似,不推荐使用这个,可以用from代替
      import sys
      sys.path.append('D:\')
      import oldboy
      
    • sys是解释器相关的数据:递归次数/引用次数

    2.3 json(重要)

    json是一个特殊的字符串。【长得像列表/字典/字符串/数字/真假】

    通用名词:序列化和反序列化,序列化必须为列表样式的,可以包换其他类型

    • 功能是实现对接,对接Java/C++/PHP.....等等,把数据序列化为其他语言可以调用的
      • 反序列化:把其他语言传过来的字符串调用成python可读的列表
    • json中如果包含字符串必须是双引号
    • 必须用列表或字典做序列化
    #将python中的列表序列化
    import json
    
    v = [12,13,{'k1':456,'k2':'alec'},'crue',True,False]
    val = json.dumps(v)
    print(val)	#结果为  [12, 13, {"k1": 456, "k2": "alec"}, "crue", true, false]
    
    #将其他语言传过来的字符串反序列化
    import json
    
    v = '["koper",123,"port"]'
    print(type(v))			#结果为<class 'str'>
    val = json.loads(v)
    print(type(val),val)	#结果为	<class 'list'>        ['koper', 123, 'port']
    
        
         JSON的格式反序列化Python的格式		也可反过来序列化         
        +---------------+-------------------+
        | JSON          | Python            |
        +===============+===================+
        | object        | dict              |
        +---------------+-------------------+
        | array         | list              |
        +---------------+-------------------+
        | string        | str               |
        +---------------+-------------------+
        | number (int)  | int               |
        +---------------+-------------------+
        | number (real) | float             |
        +---------------+-------------------+
        | true          | True              |
        +---------------+-------------------+
        | false         | False             |
        +---------------+-------------------+
        | null          | None              |
        +---------------+-------------------+
    

    2.4 模块导入步骤

    • 先从sys.modules里查看是否被导入
    • 如果没有被导入,就依据sys.path路径寻找模块
    • 找到了就导入
    • 创建这个模块的命名空间
    • 执行文件,把文件中的名字都放到命名空间里
    import sys
    import demo			#自己写的模块
    print(sys.modules.keys())		#可以查看文件中导入的模块都有哪些
    print(sys.path)					#导入的模块路径是什么
    
    import os,sys,time,json   #可以这么写,但是不建议这么用,后续维护代码成本高,注释模块时改动大
    #导入模块时
    先导入内置模块
    再导入扩展的模块(例如django)
    后自定义模块
    
  • 相关阅读:
    sql语句
    CSS笔记
    mysql与oracle区别
    ajax请求aspx
    列表简单排序
    列表删除元素
    正则表达式简介
    创建列表
    动态串 StringBuilder
    StrinBuilder 追加 ,插入,删除,和替换操作
  • 原文地址:https://www.cnblogs.com/lynlearnde/p/12909531.html
Copyright © 2020-2023  润新知