python基础知识总结(第二篇):基础语句(判断语句和循环语句)
目录
一、文件操作
1. 文件的读取
(1)文件的打开
语法:open(name, mode, encoding)
说明:
- name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
- mode:设置打开文件的模式(访问模式):只读、写入、追加等。
- encoding:编码格式(推荐使用UTF-8)
示例:f = open('python.txt', 'r', encoding=”UTF-8)
注意:encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指
模式 | 可做操作 | 若文件不存在 | 是否覆盖 |
---|---|---|---|
r | 只能读 | 报错 | - |
r+ | 可读可写 | 报错 | 是 |
w | 只能写 | 创建 | 是 |
w+ | 可读可写 | 创建 | 是 |
a | 只能写 | 创建 | 否,追加写 |
a+ | 可读可写 | 创建 | 否,追加写 |
(2)文件的读取和关闭
操作 | 功能 |
---|---|
文件对象 = open(file, mode, encoding) | 打开文件获得文件对象 |
文件对象.read(num) | 读取指定长度字节(单位是字节) 不指定num读取文件全部 |
文件对象.readline() | 读取一行 |
文件对象.readlines() | 读取全部行,得到列表 |
for line in 文件对象 | for循环文件行,一次循环得到一行数据 |
文件对象.close() | 关闭文件对象 |
with open() as f: | 通过with open语法打开文件,可以自动关闭 |
2. 文件的写入和追加
语法:文件对象.write(内容)
注意:
- 追加的方式和写入的一致
- 文件操作.flush(),刷新内容到硬盘中
- close()方法,带有flush()方法的功能
- 可以使用”\n”来写出换行符
二、异常
异常:就是程序运行的过程中出现了错误,即报错
1. 异常处理
(1)捕获常规异常
语法如下
try:
可能发生错误的代码
except:
如果出现异常执行的代码
(2)捕获指定异常
语法如下
try:
print(name)
except NameError as e:
print('name变量名称未定义错误')
说明:
- 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
- 一般try下方只放一行尝试执行的代码。
(3)捕获多个异常
语法如下
try:
print(1/0)
except (NameError, ZeroDivisionError):
print('ZeroDivision错误...')
(4)捕获所有异常
语法如下
try:
print(name)
except Exception as e:
print(e)
2. 异常的else
else表示的是如果没有异常要执行的代码。
try:
print(1)
except Exception as e:
print(e)
else:
print('我是else,是没有异常的时候执行的代码')
3. 异常的finally
finally表示的是无论是否异常都要执行的代码,例如关闭文件
try:
f = open('test.txt', 'r')
except Exception as e:
f = open('test.txt', 'w')
else:
print('没有异常,真开心')
finally:
f.close()
4. 异常的传递
当函数func01中发生异常, 并且没有捕获处理这个异常的时候, 异常 会传递到函数func02, 当func02也没有捕获处理这个异常的时候 main函数会捕获这个异常, 这就是异常的传递性.
# 定义一个出现异常的方法
def func1():
print("func1 开始执行")
num = 1 / 0 # 肯定有异常,除以0的异常
print("func1 结束执行")
# 定义一个无异常的方法,调用上面的方法
def func2():
print("func2 开始执行")
func1()
print("func2 结束执行")
# 定义一个方法,调用上面的方法
def main():
try:
func2()
except Exception as e:
print(f"出现异常了,异常的信息是:{e}")
main()
运行结果:
三、模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾. 模块能定义函数,类和变量,模块里也能包含可执行的代码.
1. 导入内置模块
语法:
- import 模块名
- from 模块名 import 类、变量、方法等
- from 模块名 import *
- import 模块名 as 别名
- from 模块名 import 功能名 as 别名
2. 自定义模块
每个Python文件都可以作为一个模块,模块的名字就是文件的名字. 也就是说自定义模块名必须要符合标识符命名规则
(1)测试模块(__main__)
def test(a, b):
print(a + b)
# 只在当前文件中调用该函数,其他导入的文件内不符合该条件,则不执行test函数调用
if __name__ == '__main__':
test (1, 1)
(2)__all__变量
如果一个模块文件中有`__all__`变量,当使用`from xxx import *`导入时,只能导入这个列表中的元素
四、包
从物理上看,包就是一个文件夹,在该文件夹下包含了一个 __init__.py 文件,该文件夹可用于包含多个模块文件 从逻辑上看,包的本质依然是模块
Pycharm中创建包的基本步骤:
[New] -> [Python Package] -> 输入包名 -> [OK] -> 新建功能模块
注意:新建包后,包内部会自动创建`__init__.py`文件,这个文件控制着包的导入行为
导入包
- 方法一:import 包名.模块名
- 方法二:from 包名 import *
方法二说明
- 必须在`__init__.py`文件中添加`__all__ = []`,控制允许导入的模块列表
- __all__针对的是 ’ from ... import * ‘ 这种方式 对 ‘ import xxx ’ 这种方式无效