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 sleepsleep(5)方法2:
import timetime.sleep(5)方法3:
import time as tt.sleep(5)方法4:
from time import sleep as slsl(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中安装