提供零基础网站建设教学培训,电子商务网站建设是什么,建立微信商城网站,谷歌云 wordpress 建站文章目录 文件操作文件编码什么是编码为什么要使用编码 文件的读取openmodel常用的三种基础访问模式读操作相关方法 文件的写入注意代码示例 异常定义异常捕获捕获指定异常捕获多个异常捕获所有异常异常else异常finally 异常的传递 python 模块定义模块的导入import模块名from … 文章目录 文件操作文件编码什么是编码为什么要使用编码 文件的读取openmodel常用的三种基础访问模式读操作相关方法 文件的写入注意代码示例 异常定义异常捕获捕获指定异常捕获多个异常捕获所有异常异常else异常finally 异常的传递 python 模块定义模块的导入import模块名from 模块名 import 功能名使用*导入time的sleep功能使用as给特定功能加上别名 自定义模块创建自定义模块举例__name__ 变量__all__ 变量注意 Python包自定义包定义创建包导入包使用import导入使用from import导入导入模块中 安装第三方包常见第三方包安装第三方包 综合练习需求实现 文件操作
文件编码
什么是编码 编码就是一种规则集合记录了内容和二进制间进行互相转换的规则 最常用的是UTF-8编码
为什么要使用编码 计算机内部保存的都是0和1所以需要将内容全部转换为0和1才能识别 读取时需要将计算机中保存的0和1转为内容
文件的读取
open
语法
open(name, mode, encoding)
name 要打开的目标文件名的字符串
mode 打开文件的模式只读、写入、追加
encoding 编码格式推荐使用UTF8model常用的三种基础访问模式 读操作相关方法
read方法
文件对象.read(num)
num 表示要从文件中读取的数据长度单位是字节如果没有传读取文件中所有的数据readlines()可以按照行的方式把整个文件的内容进行一次性读取并且返回的是一个列表其中每一行的数据为一个元素 readline()读取文件的一行 for循环读取文件行 close()关闭文件对象 with open语法用于打开文件并在使用完毕后自动关闭文件 代码示例
# *_*coding:utf-8 *_*
# 打开文件
f open(./read_file.py, r, encodingUTF-8)
# 读取文件
print(f读取50个字节的结果{f.read(50)})
# 在程序中多次调用read,下一次会从上一次读的偏移结尾继续读
print(f读取全部字节的结果{f.read()})# readlines读取文件的全部行封装到列表中
print(f读取文件的全部行{f.readlines()})# readline一次读取文件一行
line1 f.readline()
line2 f.readline()
line3 f.readline()
print(f第一行数据是{line1})
print(f第二行数据是{line2})
print(f第三行数据是{line3})# 关闭文件
f.close()# for循环读取文件行
for line in open(./read_file.py, r):print(line)# with open语法
with open(./read_file.py, r, encodingUTF-8) as f:print(f{f.readlines()})文件的写入
注意 直接调用write方法内容并未真正写入文件而是会积攒在程序的内存中称之为缓冲区 当调用flush的时候内容会真正写入文件 目的避免频繁磁盘操作导致效率下降 close方法内置了flush功能 w模式 文件不存在则创建 文件存在则清空 a模式 文件不存在则创建 文件存在则追加尾部写
代码示例
# *_*coding:utf-8 *_*# open打开文件使用覆盖写操作
f open(test.txt, w, encodingUTF-8)
# write写入
f.write(123456789)
# flush刷新
f.flush()
# 关闭文件
f.close()# open打开文件使用追加写操作
f open(test1.txt, a, encodingUTF-8)
# write写入
f.write(123456789)
# flush刷新
f.flush()
# 关闭文件
f.close()异常
定义
当检测到一个错误时Python解释器就无法继续运行了反而出现一些错误的提示这就是所谓的异常
异常捕获 作用提前假设某处会出现异常做好提前准备当真的出现异常时可以有后续手段 基本语法
try:可能发生异常的代码块
except:出现异常后的代码块代码示例打开一个不存在的文件
try:f open(xxx.txt, r)
except:print(open file err)捕获指定异常 注意 如果尝试执行的代码的异常类型和捕获的异常类型不一致则无法捕获异常 一般try下面只放一行尝试执行的代码 语法
try:print(name)
except NameError as e:print(name变量名称未定义错误)代码示例
try:print(name)
# as e是给NameError类型起别名
except NameError as e:print(name变量未定义错误)捕获多个异常
代码示例
# 捕获多个异常
try:print(name)
# as e是给NameError类型起别名,e中记录了异常的具体信息
except (NameError, ZeroDivisionError) as e:print(name变量未定义错误或者除0异常)捕获所有异常
代码示例
# 捕获所有异常
try:print(name)
# 方式一通过捕获Exception异常Exception是顶级异常
except Exception as e:print(name变量未定义错误)try:print(name)
# 方式二不指定具体的异常直接捕获
except:print(name变量未定义错误)异常else else表示的是如果没有异常要执行的代码 代码示例
# 异常else
try:print(name)
# as e是给NameError类型起别名,e中记录了异常的具体信息
except (NameError, ZeroDivisionError) as e:print(name变量未定义错误或者除0异常)
else:print(未发生异常)异常finally finally表示的是无论是否异常都要执行的代码 代码示例
# 异常finally
try:print(name)
# as e是给NameError类型起别名,e中记录了异常的具体信息
except (NameError, ZeroDivisionError) as e:print(name变量未定义错误或者除0异常)
else:print(未发生异常)
finally:print(总会执行我)异常的传递 异常是具有传递性的 内层的异常如果没有被捕获会沿着调用链一直向上抛直到main函数 代码示例
# *_*coding:utf-8 *_*def func1():print(func1 start)1 / 0print(func1 end)def func2():print(func2 start)func1()print(func2 end)def main():try:func2()except Exception as e:print(e)main()python 模块
定义 Python模块是一个Python文件以.py结尾模块能定义类、函数和变量模块里面也能包含可执行的代码 作用模块就是一个工具包
模块的导入 模块在使用之前需要先导入 语法
[from 模块名] import [模块|类|变量|函数|*] [as 别名]常用组合方式
import 模块名
from 模块名 import 类、变量、方法等
from 模块名 import *
import 模块名 as 别名
from 模块名 import 功能名 as 别名import模块名
基本语法
import 模块名
import 模块名1,模块名2代码示例
# 导入时间模块
import timeprint(satrt)
# 程序睡眠3s
time.sleep(3)
print(end)from 模块名 import 功能名
代码示例
from time import sleepprint(satrt)
# 程序睡眠3s
sleep(3)
print(end)使用*导入time的sleep功能
代码示例
from time import *print(satrt)
# 程序睡眠3s
sleep(3)
print(end)使用as给特定功能加上别名
代码示例
import time as tprint(satrt)
# 程序睡眠3s
t.sleep(3)
print(end)自定义模块
创建自定义模块举例
创建my_module.py
def test(a, b):print(a b)创建test_my_module.py
import my_modulemy_module.test(1, 2)__name__ 变量 在当前模块中执行时才会生效外部导入时不会执行 代码示例
def test(a, b):print(a b)if __name__ __main__:test(1, 1)__all__ 变量 如果一个模块中有__all__变量当使用from xxx import *时只能导入这个列表中的元素没有all时默认导入的是所有有all时只导入all中的 创建my_module.py
__all__ [test1]def test(a, b):print(a b)def test1(a, b):print(a b)创建test_my_module.py
from my_module import *test1(1, 1)
# NameError: name test is not defined
# test(1, 1)注意
不同模块同名的功能如果都被导入那么后导入的会覆盖先导入的
Python包
自定义包
定义 从物理上看包就是一个文件夹在该文件夹下包含了一个__init__.py文件该文件夹可用于包含多个模块文件 从逻辑上看包的本质依然是模块
创建包 右键New-Python Package-输入包名 编写对应模块文件 新建my_module1.py # *_*coding:utf-8 *_*
def info_print1():print(my_module1)新建my_module2.py # *_*coding:utf-8 *_*def info_print2():print(my_module2)导入包
使用import导入
在my_package同级创建一个test_my_package.py文件
# *_*coding:utf-8 *_*
import my_package.my_module1
import my_package.my_module2# 包中的my_module1模块的info_print方法
my_package.my_module1.info_print1()
# 包中的my_module2模块的info_print方法
my_package.my_module2.info_print2()使用from import导入
from my_package import my_module1
from my_package import my_module2my_module1.info_print1()
my_module2.info_print2()导入模块中
from my_package.my_module1 import info_print1
from my_package.my_module2 import info_print2info_print1()
info_print2()安装第三方包
常见第三方包 安装第三方包 命令pip install 包名 示例 综合练习
需求 实现 新建my_utils包 新建str_utils.py文件
# *_*coding:utf-8 *_*def str_reverse(s):reversed(s)return sdef substr(s, x, y):return s[x:y]
新建file_utils.py文件
# *_*coding:utf-8 *_*def print_file_info(file_name):try:f open(file_name, r, encodingUTF-8)except Exception as e:print(e)finally:f.close()def append_to_file(file_name, data):f1 open(file_name, a, encodingUTF-8)f1.write(data)f1.close()测试在my_utils同级新建test_my_utils.py
# *_*coding:utf-8 *_*from my_utils import str_util
from my_utils import file_utilprint(f反转后的结果是{str_util.str_reverse(abc)})
print(f取子串后后的结果是{str_util.substr(123456789, 2, 7)})file_util.print_file_info(aa.txt)
file_util.append_to_file(aa.txt, 这是一条追加内容)