1444 字
7 分钟
Python基础学习(7,8)

python文件#

文件编码的概念#

编码是什么: 编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。 编码有许多种,我们最常用的是UTF-8编码。 为什么要使用编码呢: 计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中。 同时也需要编码,将计算机保存的0和1,反向翻译回可以识别的内容。

文件的读取操作#

操作文件需要通过open()函数打开得到文件对象 文件对象有一下读取方法:

  • red()
  • readline()
  • readlines()
  • for line in 文件对象

文件读取完成后,要通过文件对象.close()方法关闭文件对象,否则文件会被一直占用

操作功能注意
文件对象 = open(file, mode, encoding)打开文件获得文件对象file,和mode是位置参数,encoding是关键字参数
文件对象.read(num)读取指定长度字节不指定num读取文件全部出来的是字符串类型
文件对象.readline()读取一行
文件对象.readlines()读取全部行,得到列表
for line in 文件对象for循环文件行,一次循环得到一行数据
文件对象.close()关闭文件对象
with open() as 文件对象通过with open语法打开文件,可以自动关闭

注意读取操作有指针

with open("D:\python.txt","r",encoding="utf-8") as f:
print(f.read().count("itheima"))
6

文件的”w”写入#

写入函数使用open函数的mode=“w”进行写入 写入的内容:

  • write()写入内容
  • flush()刷新内容到硬盘中
  • close()自带flush内容

注意事项:

  • w模式,文件不存在,创建新文件
  • w模式,文件存在,会清空文件原有内容
  • close()方法,带有flush()方法的功能

文件的”a”的追加写入#

写入函数使用open函数的mode=“a”进行追加写入 写入的内容:

  • write()写入内容
  • flush()刷新内容到硬盘中
  • close()自带flush()内容

注意事项:

  • a模式,文件不存在,创建新文件
  • a模式,文件存在,会在原有内容后边追加写入
  • close()方法,带有flush()方法的功能
  • 可以使用”\n”追加换行符

python的异常,模块和包#

了解异常#

异常就是程序运行过程中出现了错误 异常就是bug,因为历史中有小虫子导致程序的异常,延续至今

异常的捕获#

为什么要捕获异常: 在可能发生异常的地方,进行捕获,在异常出现的时候,提供解决方案,而不是任由其导致程序无法执行 捕获异常的语法:

try:
可能发生异常的语句
except[异常 as 别名]:
出现异常时的准备手段
[else:]
未出现异常该做的事情
[finally:]
不管出不出现异常该做的事
# []表示可选
try:
f=open("D:\ nima.txt","r",encoding="utf-8")
except FileNotFoundError as e:
print("error")
print(e,type(e))
f=open("D:\ nima.txt","w",encoding="utf-8")
else:
print("ok")
f.close()
error
[Errno 2] No such file or directory: 'D:\\ nima.txt' <class 'FileNotFoundError'>

如何捕获所有的异常:

  • except
  • except Exception

一般情况使用第二种

异常的传递性#

def func1():
print("func1开始")
num=zero
print("func1结束")
def func2():
print("func2开始")
func1()
print("func2结束")
def main():
func2()
main()
func2开始
func1开始
Traceback (most recent call last):
File "D:\PythonProject\test.py", line 11, in <module>
main()
File "D:\PythonProject\test.py", line 10, in main
func2()
File "D:\PythonProject\test.py", line 7, in func2
func1()
File "D:\PythonProject\test.py", line 3, in func1
num=zero
^^^^
NameError: name 'zero' is not defined

异常具有传递性,我们可以捕获比较高的级别而不是捕获底层,比较便利

def func1():
print("func1开始")
num=zero
print("func1结束")
def func2():
print("func2开始")
func1()
print("func2结束")
def main():
try:
func2()
except NameError as e:
print(e,type(e))
main()
func2开始
func1开始
name 'zero' is not defined <class 'NameError'>

Python模块#

模块的概念和导入#

什么是模块: 模块就是一个Python代码文件,内含类、函数、变量等,我们可以导入进行使用。 如何导入模块:

[from 模块] import [模块||变量|函数|*] [as 别名]

方法1:

from time import sleep
sleep(5)

方法2:

import time
time.sleep(5)

方法3:

import time as t
t.sleep(5)

方法4:

from time import sleep as sl
sl(5)

注意:

  • from和as都可以省略,可以直接import模块
  • 通过"."来确定成绩关系如方法二
  • 模块的导入一般放在代码文件的开头位置

自定义模块且导入#

在Python代码文件中正常写代码即可,通过import、from关键字和导入Python内置模块一样导入即可使用。

如果想在自定义模块下调试要用到:if __name__=='__main__':如果在内部调试if = True,会在起下部分内容且执行,反之不在内部调用if =Flase不会用下边内容

注意事项:

  • 不同的模块,同名的功能,如果都被导入,那么后导入会覆盖先导入的
  • __all__=[]会控制且限制[from 模块] import *中的*****哪些功能会被导入

Python包#

自定义Python包#

什么是Python包: Python包就是文件夹,Python里面可以存放很多的Python模块,通过包,在逻辑上将一批模块归为一类,方便管理,在创建Python包的时候,默认创建__init__.py,没有它说明它暂时不是python包

__init__.py文件的作用: 创建包会默认创建的文件,通过这个文件来表示该文件夹是Python包,而不是普通的文件夹,也可以控制该Python包,如__all__

__init__.py__all__的作用:

同模块一样,控制import()能够导入的内容

安装第三方包#

什么是第三方包?有什么作用? 第三方包就是非Python官方内置的包,可以安装它们扩展功能,提高开发效率。

如何安装?

  • 在命令提示符内:
    • pip install 包名称
    • pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
  • 在PyCharm中安装
Python基础学习(7,8)
https://fuwari.vercel.app/posts/78/
作者
ZCW
发布于
2026-01-07
许可协议
CC BY-NC-SA 4.0