Python | 文件、异常模块与包

这篇具有很好参考价值的文章主要介绍了Python | 文件、异常模块与包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python | 文件、异常模块与包

1.文件

1.1 文件编码

编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。

  • 计算机常用编码:
    • UTF-8
    • GBK
    • Big5

UTF-8是目前全球通用的编码格式
除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可。

1.2 文件的读取操作

一般,文件可以分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。

  • 文件操作包括打开、关闭、读、写
1.2.1 文件的操作步骤
  • 打开文件
  • 读写文件
  • 关闭文件
    可以只打开和关闭文件,不进行任何读写
1.2.2 open()打开函数

使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件。

1.2.2.1 语法

open(name,mode,encoding)

name: 是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode: 设置打开文件的模式(访问模式):只读、写入、追加等。
encoding: 编码格式(推荐使用UTF-8)

样例代码:

f = open('python.txt', 'r', encoding='utf-8')

此时的fopen函数的文件对象,注意:此时的fopen函数的文件对象,对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性或对象.方法对其进行访问,后续面向对象课程会给大家进行详细的介绍。

1.2.2.2 mode常用的三种基础访问模式
模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件
a 打并一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
样例代码
# 打开文件
f = open("F:/Study_Python/t.txt", "r", encoding="UTF-8")
print(type(f))

读取文件类型:
Python | 文件、异常模块与包

1.2.3 read()读取文件

无论是什么读取方法,都会续接上次的内容

read()方法:

文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

readlines()方法:

读取全部行
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

# 打开文件
f = open("F:/Study_Python/t.txt", "r", encoding="UTF-8")

# 读取文件 - readline()
lines = f.readlines()  # 读取全部行,并封装到列表中
print(f"lines对象的类型:{type(lines)}")
print(f"lines的内容有:{lines}")

若多次调用read方法时,下一个read的开头会在上一个read的结尾处

样例代码文件内容:
         《悯农二首》
     作者:李绅
春种一粒粟,秋成万颗子。
四海无闲田,农夫犹饿死。
锄禾日当午,汗滴禾下土。
谁知盘中餐,粒粒皆辛苦。
样例代码:
# 打开文件
f = open("F:/Study_Python/t.txt", "r", encoding="UTF-8")

# 读取文件 - read()
print(f"读取20个字节的结果:\"{f.read(20)}\"")
print(f"read读取全部内容的结果:\"{f.read()}\"")
输出结果:
Python | 文件、异常模块与包
readline()方法:

一次读取一行
可以使用for循环读取文件行,语法:

for line in open("F:/Study_Python/t.txt", "r", encoding="UTF-8"):
    print(line)

每一个line都是一个临时变量

1.2.4 文件关闭操作

通过close()关闭文件对象,也就是关闭对文件的占用。
!如果不调用close,同时程序没有停止运行,则这个文件就一直被Python程序占用。
语法:

f.close()
1.2.5 with open语法

自动完成关闭文件对象的操作
语法:

with open("F:/Study_Python/t.txt", "r", encoding="UTF-8") as f:
    for line in f:
        print(f"每一行数据是:{line}")

输出:
Python | 文件、异常模块与包

1.2.6 操作汇总
操作 功能
文件对象= open(file, mode, encoding) 打开文件获得文件对象
文件对象.read(num) 读取指定长度字节,不指定num读取文件全部
文件对象.readline() 读取一行
文件对象.readlines() 读取全部行,得到列表
for line in文件对象 for循环文件行,一次循环得到一行数据
文件对象.close() 关闭文件对象
with open() as f 通过with open语法打开文件,可以自动关闭

1.3 文件的写入操作

文件流程:

# 1.打开文件
f = open("F:/Study_Python/t.txt", "w", encoding="UTF-8")

# 2.文件写入
f.write('hello world!')   # 写入内容

# 3.内容刷新
f.flush()			# 刷新内容到硬盘中

# 4.close关闭
f.close()  # 内置了flush的功能

注意:

  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush的时候,内容会真正写入文件
  • 这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)
  • w模式:
    • 文件不存在:创建新文件,进行写
    • 文件存在:清空原文件内容,再写入

1.4 文件的追加写入操作

文件流程:

# 1.打开文件
f = open("F:/Study_Python/t.txt", "a", encoding="UTF-8")

# 2.文件写入
f.write('hello world!')

# 3.内容刷新
f.flush()

# 4.close关闭
f.close()  # 内置了flush的功能

a模式:
- 文件不存在:创建文件
- 文件存在:在文件末尾追加写入文件

2.异常模块与包

2.1 异常

程序正常执行过程中出现的不正常的情况,该情况影响了程序的正常执行。
简单案例:

# 读取一个不存在的文件
f = open("F:/Study_Python/t1.txt", "r", encoding="UTF-8")

输出结果:
Python | 文件、异常模块与包

2.2 异常的捕获

程序遇到异常的两种情况:

  • 整个程序因为Bug停止运行
  • 对Bug进行提醒,整个程序继续运行 <捕获异常>

捕获异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。

2.2.1 基本语法:
try:
	可能发生错误的代码
except:
	如果出现异常执行的代码

简单案例:

try:
    f = open("F:/Study_Python/t1.txt", "r", encoding="UTF-8")
except:
    print("由于文件不存在,出现异常,修改open模式")
    f = open("F:/Study_Python/t1.txt", "w", encoding="UTF-8")

输出结果:
Python | 文件、异常模块与包

2.2.2 捕获指定异常

基本语法:

try:
	print(name)
except NameError as e:
	print('name变量名称未定义错误')
2.2.3 捕获多个异常

当捕获多个异常时,可以把要捕获的异常类型的名字,放到except后,并使用元组的方式进行书写。

try:
	print(1/0)
except (NameError, ZeroDivisionError):
	print('ZeroDivision错误...')
2.2.4 捕获全部异常
# 捕获全部异常
try:
    print(1 / 0)
except Exception as e:
    print(f"出现异常:{e}")
2.2.5 异常else

else表示的是如果没有异常要执行的代码。

try:
    print(1)
except Exception as e:
    print(e)
else:
    print("我是else,是没有异常的时候执行的代码")
2.2.6 异常finally

finally表示的是无论是否异常都要执行的代码,如关闭文件。

try:
    f = open("t.txt", "r")
except Exception:
    f = open("t.txt", "w")
else:
    print("我是else,是没有异常的时候执行的代码")
finally:
    print("我是finally,无论有没有异常,我都会执行的代码")
    f.close()

输出结果:
Python | 文件、异常模块与包

2.2.7 异常的传递性

异常是具有传递性的
当函数func01中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数func02,当func02也没有捕获处理这个异常的时候main函数会捕获这个异常,这就是异常的传递性.
Python | 文件、异常模块与包
图:黑马程序员

当所有函数都没有捕获异常的时候,程序就会报错

3.模块

Python模块就是一个Python文件,以 .py 结尾
模块能定义函数,类和变量,模块内也可以包含可执行的代码

3.1 模块的导入方式

  • 导入语法:
[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]
  • 常用的组合形式如:

    • import 模块名
    • from 模块名 import 类、变量、方法等
    • from 模块名 import *
    • import 模块名 as 别名
    • from 模块名 import 功能名 as 别名
  • 基本语法:

import 模块名
import 模块名1,模块名2

模块名.功能名()

案例代码:

# # 使用import导入
# import time
#
# print("开始1")
# time.sleep(1)
# print("结束1")
#
# # 使用from导入sleep的具体功能
# from time import sleep
#
# print("开始2")
# sleep(5)
# print("结束2")

# # 使用from导入sleep的全部功能
# from time import *
# print("开始3")
# sleep(5)
# print("结束3")

# 使用as给特定功能加上别名    给特定功能改名
# from time import sleep as s
# print("开始4")
# s(5)
# print("结束4")

3.2 自定义模块

每个Python文件都可以作为一个模块,模块的名字就是文件的民资,也就是说自定义模块名必须要符合标识符命名规则
Python | 文件、异常模块与包
当导入多个模块时,且模块内有同名功能,当使用这个同名功能时,调用的是,后面导入的模块的功能。

3.3 __main__

当一个 Python 模块或包被导入时,__name__ 会被设为模块的名称。

调用模块时,不会执行__main__相关代码,但在执行模块本身文件时,会执行__main__相关代码

if _main_== "_main_"表示,只有当程序是直接执行的才会进入if内部,如果是被导入的,则if无法进入

3.4 __all__

如果一个模块文件中有_all_变量,当使用from xxx import()导入时,只能导入这个列表中的元素
Python | 文件、异常模块与包
如上代码:只能导入test_A()

4.包

包,就是里面装了一个__init__.py文件的文件夹,该文件夹可用于多个模块文件。
包的本质就是模块

步骤:

  • 新建包my_package
  • 新建包内模块:my_module1my_module2
  • 定义模块内代码

新建包后,包内部会自动创建_——int__.py文件,这个文件控制包的导入行为。

4.1 导入包

可使用__all__变量,控制 import *

4.1.1 方式一
import 包名.模块名
包名.模块名.目标
4.1.2 方式二
from 包名 import 模块名
模块名.目标
4.1.3 方式三
from 包名.模块名 import 目标
目标

4.2 安装第三方包

一个包,就是一堆同类型功能的集合体

命令提示符程序内输入:
pip install 包名称
即可通过网络快速安装第三方包

Python | 文件、异常模块与包
4.2.1 pip的网络优化

我们可以通过如下命令,让其连接国内的网站进行包的安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称文章来源地址https://www.toymoban.com/news/detail-649214.html

到了这里,关于Python | 文件、异常模块与包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python零基础入门(十)——模块与包

    个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊 欢迎来到本系列的第十篇文章!在前面的学习中,

    2024年02月14日
    浏览(36)
  • python学习 - 模块与包的基础概念

    文章首发于我的个人博客:欢迎大佬们前来逛逛 python提供了一种方法,可以使得在文件编写 函数的定义 ,然后再另一个文件中可以导入这个文件中的函数的定义继而使用。这种文件就叫做 模块 。 模块可以导入另一个模块或者主模块中。 例如我们创建一个文件,内含两个函

    2023年04月19日
    浏览(38)
  • Python-Go python模块与包 - GO问题 - GO容量测试

    目录 go 模块与包复习(Init函数 - go mod) init函数有什么用?init函数是什么? go.mod文件是什么?有什么作用? python的模块与包 python中包的分类 1、内置模块:不需要安装,直接使用 2、三方模块:需要安装,再使用 3、自定义模块 python中自定义模块的简述 导入模块的两种方式

    2024年02月16日
    浏览(40)
  • < Python全景系列-7 > 提升Python编程效率:模块与包全面解读

    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。 Python全景系列的第七

    2024年02月06日
    浏览(44)
  • 模块与包

    模块--》文件 包--》文件夹 我们将类似功能的模块放到一起(包)内,要用时直接导入即可 语法: import 模块名 as 别名: ---》取别名是为了可以节省时间,简化代码 import win32process as pro # 以后直接用pro即可 模块分为三种: 1.内置模块 2.第三方模块 3.自定义模块 导入模块:

    2024年02月05日
    浏览(35)
  • python:基础知识—流程控制—函数与模块—数据结构—类与GUI和Turtle—异常处理与文件,概括全书(上万字最详细版)

    这里是一张夜景,给大家放松一下。 !!无锡南长街 python是一门同时支持 面向过程 与 面向对象 的高级语言,由于开放源码的特性,具有 移植性好,可跨平台,具有丰富的第三方库 。扩展名名为 .py 。 python中常见的数字有三种类型·:整数( integer ),浮点数( float ),与

    2024年02月09日
    浏览(57)
  • 不就是Java吗之 认识异常

    大家好 , Java 专栏本应该早就完成的 但是之前发表异常的文章的时候 , 超过当天发布文章限制了 所以那时候就没上传成功 , 真的深感抱歉 刚才发现竟然少文章了 另外祝大家新年快乐 大年初七别忘了吃面条 在计算机程序运行的过程中,总是会出现各种各样的错误。 在 Java 中

    2024年01月23日
    浏览(56)
  • 就是这么简单,Selenium StaleElementReferenceException 异常分析与解决

    简介 Selenium 是一个流行的自动化测试工具,用于模拟用户与网页交互。然而,当我们在使用 Selenium 时,可能会遇到一个常见的异常,即 StaleElementReferenceException 。这个异常通常在我们尝试与网页上的元素交互时抛出,可能会导致我们的自动化测试脚本运行失败。本文将深入探

    2024年04月14日
    浏览(37)
  • python标准模块介绍 -Base64: Base64, Base85等数据编码

    功能:RFC 3548: Base16, Base32, Base64 数据编码。转换二进制数据为适合明文协议传输的 ASCII 序列。转换 8bits 为每个字节包含 6,5 或 4bits 的有效数据,比如 SMTP, URL 的一部分或者 HTTP POST 的一部分。参考: RFC 3548。编码算法不同于 uuencode。 类型:标准库 相关模块:uu, binhex, uu, quopri Base64

    2024年02月05日
    浏览(45)
  • python入门,文件的编码,读取,写入,追加

    目录 1.文件的编码 2.文件的读取 1.open()函数打开文件 2.rede()读取文件 3.readlines()方法 4.readline()方法 5.for循环读取  3.文件的关闭 withopen语法 4.文件的写入 1.write写入字符串 2.flush 5.文件的追加 计算机只认得0和1,文件的编码即一种对应方式,比如说“小红”在某一种

    2024年01月21日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包