一、减少出错小技巧
编写一个模块时。
注意顶格写的代码主要是:
- 定义变量
- 定义函数
- 定义类
调用函数,使用变量,尽量不要顶格写。
写在 if name == “main“: 中,例如:
**
print(name)
from lesson12 import lesson11作业
if name == “main“:
print(“主程序”)
输出:
main
lesson12.lesson11作业
主程序
解析:
主程序: main
子模块:导入进来的的模块,import会读取顶格写的代码.
二、路径操作
(1)常用操作
1、获取文件名(相对路径)file
print(file)
2、获取文件绝对路径 os.path.abspath(file)
print(os.path.abspath(file))
3、获取文件父目录路径os.path.dirname()
print(os.path.dirname(os.path.abspath(file)))
4、路径拼接 os.path.join()
** 需要一级一级的拼接**<br />join_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), "join_file")
(2)不常用操作
1、创建目录
不能第二次创建
**
path = os.path.join(os.path.dirname(os.path.abspath(file)), “lesson12”)
os.mkdir(path)
2、判断路径是否真实存在
返回bool, 避免二次创建
**
if not os.path.exists(path):
os.mkdir(path)
else:
print(“已存在”)
3、删除一个目录(不要用)
os.rmdir(path)
4、获取目录路径下的文件和文件夹列表
print(os.listdir(path))
5、判断当前文件是否是目录
返回布尔值
6、判断当前文件是否是文件
返回布尔值
print(os.path.isfile(path))
三、异常处理
(1)什么是异常
程序发生了意想不到的错误,报错
print(a) # NameError: name ‘a’ is not defined
(2)异常常见的类型
ImportError 无法引入模块或包
IndexError 下表索引超出序列边界
NameError 使用一个还未赋予对象的变量
SyntaxError 代码逻辑语法出错,不能执行 -> 不能去捕获
TypeError 传入的对象类型与要求不符
ValueError 传入一个不被期望的值,即使类型正确
KeyError 试图访问你的字典里不存在的键
IOError 输入输出异常,文件操作
ZeroDivisionError 被0除
SyntaxError
print()
IndexError
[1,2][1000]
KeyError
a = {“a”: 1}
a[“b”]
ValueError
print(int(“a”)) #ValueError: invalid literal for int() with base 10: ‘a’
ZeroDivisionError
3/0
(3)出现异常会如何
程序遇到异常通常会中断
(4)处理异常
1、定位和解决异常的步骤
- 找到异常类型
- 异常分析(看冒号后面的解释)
- 找到出现异常的代码(单击报错行,会跳到相应的位置)
2、异常捕获
1、
a = “1”
b = 2
try:
c = a + b
print(c)
except:
print(TypeError, “数据异常”)
2、
3、
4、