Python 语言-第七章模块与文件操作

第七章模块与文件操作

7.1 模块

7.1.1 认识模块

  • 模块英文为 Modules
  • 函数与模块的关系
    • 一个模块可以包含多个模块
  • 在 Python 中,一个扩展名为".py"的程序文件就是一个模块(module)
  • 模块的好处:
    • 方便其他程序和脚本的导入、使用
    • 避免函数名和变量名冲突
    • 提高代码的可维护性、可重用性
  • 拓展脚本、文件、模块的基本概念:
    • 这三者并无太大区别
    • 文件:通常,Python 文件是包含代码的任何文件。大多数Python文件的扩展名为 .py
    • 脚本:Python 脚本是基于命令行执行以完成某项任务的一类文件
    • 模块:Python 模块是从另一个模块、脚本或解释器中导入的文件

7.1.2 模块的定义与使用

  • 创建模块

    • 新键一个 .py 文件,名称不要与 python 自带的标准模块名称相同
  • 导入整个模块

    • 语法格式:

      import 模块名1 [as 别名1][,模块2[别名2]]……
      
  • 从模块中导入指定项目使用 from……import 语句,语法格式:

    from 模块名 import 项目1,[,项目2,[,...,项目n]]
    from 模块名 import *  #指定模块导入所有项目
    
  • 调用格式:

    模块名或别名.函数名(参数)
    

7.1.3 main() 函数

  • main 函数的语法格式:

    if __name__ == '__main__':
        pass
    
  • main 函数有什么用?

    • 可以判断当前 python 脚本是否是直接被 python 直接调用执行
      • 如果 python 脚本被作为模块引入时,其中的 main() 函数及后面的代码将不会被执行。
  • 原理:

    • main() 函数可以看成是python程序的入口,其实也就是个 if 条件语句
    • 在每个模块的定义中都包括一个记录模块名称的变量 __ name __
      • 如果是当前模块运行,不管哪个位置的 __ name __ 属性,值都是__ main __
      • 当这个脚本作为模块被导入到另一个 .py 文件中,并且在这个.py 文件运行,此时的__ name __属性就会变成对应文件的文件名
    • 然后通过 if 语句判断当前模块的名称,如果是 __ main __,后续代码就会运行

7.1.4 包

  • 在 python 中的包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下

  • 包的作用

    • 使代码规范
    • 避免模块名称冲突
  • 包于目录的区别

    • 包:包含__ init __.py 文件的目录称为包
    • 目录:不含__ init __.py 文件的称为目录
  • 导入包跟导入模块基本类似:

    import 包名.模块名
    

7.1.5 常见的内置模块

  • 模块名 描述
    sys 与 python 解释器及环境操作相关的标准库
    time 与时间相关的各种函数的标准库
    os 访问操作系统服务功能的标准库
    calender 与日期相关的各种函数的标准库
    urllib 用于读取来自网上(服务器)的数据标准库
    json 用于使用 json 序列化和反序列化对象
    re 用于在字符串中执行正则表达式匹配和替换
    math 提供标准算数运算函数的标准库
    decimal 用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算
    logging 提供了灵活的记录事件、错误、警告、和调试信息等日志信息的功能

7.1.6 第三方模块的安装使用

  • 安装

    • 以 windows 为例,语法格式:

      pip install 模块名
      
    • 例如:

      C:\Users\smzy> pip install scrapy
      
    • 一些第三方模块下载慢,可能使用国内的网站或者镜像

  • 使用

    • 与内置模块一样的使用方法:

      import 模块名
      

7.2 文件操作

7.2.1 常见字符编码格式

  • python 解释器使用的是 Unicode (内存)

  • .py 文件在磁盘上使用的 UTF-8 储存(外存)

  • image-20220119222527541

7.2.2 文件读写原理

  • 文件读写操作,通常称为”I/O操作“
    • 读:从硬盘到内存
    • 写:从内存到硬盘
  • python 读取文件文件遵从”先进先出“规则,先进入”管道“的先出来,所以基本上 python 程序是从上而下逐行运行的
  • 文件读写操作流程:
    image-20220120113020578
  • 操作原理:
    image-20220120113427548

7.2.3 文件读写操作

  • 使用内置函数open()创建文件对象

    • 使用 open() 创建的对象一定要记得关闭对象,否则会造成严重的资源浪费
  • 语法格式:

    open(filename[,mode][,encoding])
    

    filename:要创建或者要打开的文件名称

    mode:打开的模式(默认为只读)。下一节会介绍

    encoding:打开的编码格式(默认为 GBK)

    • 例如:

      file1 = open(r'D:\PyCham','a',encoding = 'UTF-8')
      file1.read()        #对文件对象进行操作
      file1.close()
      
  • 原理:

    • 通过 I/O 流将磁盘文件的内容与程序中的对象中的内存进行同步
      image-20220120114206488

7.2.4 文件常见的打开模式

  • 以文件的数据组织形式分为:二进制文件和文本文件

    • 二进制文件:把数据内容以“字节”进行存储,无法用记事本打开
      • 例如:MP3 音频文件、jpg 图片、.doc 文档
    • 文本文件:以普通“字符”方式储存,默认为 Unicode 字符集,可以使用记事本打开
  • 打开模式:

    打开模式 描述
    r 以只读模式打开文件。文件的指针会放在文件的开头
    w 以只写模式打开文件,如果文件不存在,则创建文件;如果文件存在,则覆盖文件内容。文件的指针会放在文件的开头
    a 以追加模式打开文件,如果文件不存在,则创建文件;如果文件存在,则想文件追加文件内容。文件的指针会放在文件的末尾
    b 以二进制方式打开文件,不能单独使用,需要与其他模式一起使用,如:rb、wb
    + 以读写方法打开文件,不能单独使用,需要与其他模式一起使用,如:a+

7.2.5 文件对象的常用方法

  • 方法名 说明 参数
    read([size]) 从文件中读取 size 个字节或字符内容返回;如果省略 size,则一次读取文件所有内容 size:文件读取的字节数
    readline() 从文本文件中读取一行内容
    readlines() 将文本文件中每一行都作为独立的字符串对象,放入列表中返回
    write(str) 将字符串 str 内容写入文件
    writelines(s_list) 将字符串列表 s_list 写入文本文件,不添加换行符 s_list :字符串列表
    seek(offset[,whence]) 将文件指针移动到新的位置 offset:相对于 whence 的位置,为正往结束的方向移动,为负数往开始方向移动
    whence:不同的值代表不同含义;0:从文件头开始计算(默认情况);1:从当前位置开始计算;2:从文件尾开始计算
    tell() 返回文件指针当前位置
    flush() 将缓存区内容写入文件,但是不关闭文件
    close() 将缓存区内容写入文件,同时不关闭文件,释放文件对象相关资源

7.2.6 with 语句

  • 语法格式:

    with 上下文表达式 [as 上下文表达式的别名]:
        with 语句体
    

    上下文表达式:是指其表达式中需要实现”上下文管理器协议“,才能使用 with 语句

    别名:方便后续对上下文表达式中的对象进行操作

  • 上下文管理器协议:一个类对象在 Python 中,只要实现以下方法,就实现了上下文管理器协议:

    • __enter__:在进入 with 语法块之前调用,返回值会赋值给 withtarget
    • __exit__:在退出 with 语法块时调用,一般用作异常处理
  • 而这个类对象的实例对象就被称为上下文管理器,所以 含有上下文表达式的 with 语句,也被称为上下文管理器

  • 特点:with 语句可以自动管理上下文资源,能使上下文资源,无论出现什么原因都可以跳出 with 块,都能确保文件的正确关闭

  • 使用 with 语句来进行文件的读写能即使达到释放资源的目的

    • 离开运行时,上下文会自动调用上下文管理器的特殊方法__exit__(),所以就不用手动使用close()方法释放内存了

7.3 对目录或者文件的操作

  • 主要介绍一下 os 模块和 os.path 模块

    • 这两个模块都是主要用于对目录或者文件的操作
  • os 模块

    • python 内置的与操作系统功能和文件系统相关的模块

    • 这个模块中的语句的执行结果通常与操作系统有关

    • 在不同的操作系统上运行,得到的结果可能不同

    • 启动应用os.system('应用.exe')

      • 例如:

        import  os
        #启动系统软件
        # os.system('calc.exe') #计算器
        # os.system('notepad.exe') #记事本
        
    • 调用可执行文件os.startfile('可执行文件')

      • 例如:

        import  os
        #调用可执行文件
        #os.startfile('D:\qq.exe') #启动qq
        
    • os 模块操作目录的相关函数

      函数 描述
      getcwd() 返回当前工作目录
      listdir(path) 返回指定路径下的文件和目录信息
      mkdir(path[,mode]) 创建目录
      mkdirs(path1/path2……[,mode]) 创建多级目录
      rmdir 删除目录
      removedires(path1/path2……) 删除多级目录
      chdir(path) 将 path 设置为当前工作目录
  • os.path 模块

    • 操作目录的相关函数

      函数 说明
      abspath(path) 用于获取文件或目录的绝对路径
      exists(path) 用于判断文件和目录是否存在,如果存在返回 True,不存在返回 False
      join(path,name) 将目录与目录或文件名拼接起来
      splitext() 分离文件名和拓展名
      basename(path) 从一个目录中提取文件名
      dirname(path) 从一个路径中提取文件路径,不包括文件名
      isdir(path) 用于判断是否为路径
posted @ 2022-01-20 14:36  你是我的生命之源  阅读(230)  评论(0)    收藏  举报
页脚