原创

Python基础(篇六)

温馨提示:
本文最后更新于 2022年10月27日,已超过 964 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

十一. 模块

1. 什么叫模块

在python中一个扩展名为.py的文件就是一个模块

  • 函数与模块的关系

    • 一个模块中可以包含多个函数
  • 使用模块的好处

    • 方便其他程序和脚本的导入并使用
    • 避免函数名和变量名冲突
    • 提高代码的可维护性
    • 提高代码的可重用性

2. 自定义模块

  • 创建模块 : 新建一个.py文件,名称不要与python自带的标准模块名称相同

  • 导入模块

    import 模块名称  [as 别名]
    
    from 模块名称 import 函数/变量/类
    

模块的引入方式

import math  #引入整个math模块
from math import pi  #引入math模块中的pi函数

from demo1 import add  #引入自定义模块demo1中的add函数

import demo1 as myMath  #引入整个自定义模块demo1并赋别名

print(add(1,2))
print(myMath.dive(2,3))

3. 以主程序的形式执行

在每个模块的定义中都包括一个记录模块名称的变量_name程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其它程序中执行,那么它可能在解释器的顶级模块中执行。顶级模块的\name__变量的值为__main__

def add(a,b):
    return a+b

if __name__ == '__main__':  #只有在运行本模块的时候,以下代码才会被执行
    print(add(20, 30))

4. python中的包

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

  • 作用

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

    • 包含__init__.py文件的目录成为包
    • 目录里通常不包含__init__.py文件
  • 包的导入

    import 包名.模块 名

5.常用内置模块

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

6. 第三方模块的安装及使用

  1. 安装

pip install 模块名

  1. 使用

import 模块名

  1. 总结

image-20220720141553646

十二 . 编码及文件操作

1. 编码格式介绍

常见的字符编码格式

  • Python的解释器使用的是Unicode(内存)
  • .py文件在磁盘上使用UTF-8存储(外存)

image-20220721103125087

文件读写

  • 文件的读写俗称”IO操作“
  • 文件读写操作流程
    • python操作文件
    • 打开或新建文件
    • 读,写文件
    • 关闭资源

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

语法规则

file = open(filename,[,model,encoding])
//file = 被创建的文件对象
//filename = 创建或打开的文件名称
//model = 打开方式(默认为只读)
//encoding = 打开的编码格式(默认为gbk)

文件读取

file  = open('test.txt','r',encoding='utf-8')
print(file.name)
print(file.readlines())
file.close()

2. 文件的读写原理

3. 文件读写操作

文件的打开方式

使用open(filename,'w',encoding="utf-8") 时,会将源文件内容读取到内存。

如果此时程序异常退出时,会丢失文件内容

文件的类型

  • 按文件中数据的组织形式,文件分为以下两大类
    • 文本文件:存储的是普通“字符"文本,默认为unicode字符集,可以使用记本事程序打开
    • 二进制文件: 把数据内容用“字节"进行存储,无法用记事本打开,必须使用专用的软件打开,举例: mp3音频文件,jpg图片.doc文档等

打开模式描述

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

4. 文件对象常用的方法

文件对象常用方法

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

5. with语句(上下文管理器)

with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的

image-20220721104543429

with语句可以自动管理上下文资源,无论程序是否发生错误,都会执行exit方法

with open('b.txt','r',encoding='utf8') as file:
    print(file.read())
"""
User对象实现了特殊方法 enter 和exit   称为该对象遵守了上下文管理协议
该对象的实例对象称之为上下文管理器。使用with关键字可以自动代理上下文管理
"""
class User:
    def __enter__(self):
        print("进入enter方法")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("执行推出方法")

    def say(self):
        print("你好!!!")

u = User()
u.say()
with User() as u1:
    u1.say()

6. 目录操作

  • os模块是Python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
  • os模块与os.path模块用于对目录或文件进行操作

OS模块操作目录相关函数

函数 说明
getcwd() 返回当前的工作目录
listdir(path) 返回指定路径下的文件和目录信息
mkdir(path[, mode]) 创建目录
makedirs(path1/path2.. . [, mode]) 创建多级目录
rmdir(path) 删除目录
removedirs(path1/path2... ...) 删除多级目录
chdir(path) 将path设置为当前工作目录

os.path模块操作目录相关函数

函数 说明
abspath(path) 用于获取文件或目录的绝对路径
exists(path) 用于判断文件或目录是否存在,如果存在返回True,否则返回False
join(path, name) 将目录与目录或者文件名拼接起来
splitext() 分离文件名和扩展名
basename(path) 从一个目录中提取文件名
dirname (path) 从一个路径中提取文件路径,不包括文件名
isdir(path) 用于判断是否为路径
import os

print(os.path.exists("demo11.py"))
print(os.path.split("D:\工作文件\python工作空间\my1\demo1\demo11.py"))
print(os.getcwd())
print(os.path.isdir("demo11.py"))

#获取指定目录下的所有py文件
files = os.listdir(os.getcwd())
for file in files:
    if file.endswith(".py"):
        print(file)
import os

cur = os.getcwd()
files = os.walk(cur)  #使用walk得到当前目录下的所有文件及子文件。返回一个元组列表
for item in files:
    print(item)

#也可以使用下面的方式遍历
for filePath,fileDir,file in files:
    print(filePath)
    print(fileDir)
    print(file)
    for dir in fileDir:
        print(os.path.join(filePath,dir))
    for fi in file:
        print(os.path.join(filePath,fi))
    print("--------------------")
正文到此结束