python对异常的处理方式?
python引入异常类处理异常情况。
异常的处理流程:发生异常->生成异常对象->提交给解释器->解释器捕获异常->调用异常已处理代码。
异常代码写法如下:
try:
print('step1')
para = input('input a number')
val = 3/int(para)
print('step2')
except BaseException as e:
print('error')
print(e)
else:
print('the result is{0}'.format(val))
finally:
print('运行结束')
#输入0
step1
input a number0
error
division by zero
运行结束
#输入1
step1
input a number1
step2
the result is3.0
运行结束
资源释放:打开资源会存在异常发生,常常资源不能释放的问题,常常采用finally保证资源释放,也可以采用with关键字实现:
#上下文管理:代替try finally操作的繁琐,用于执行完成后自动释放资源。
with open(‘d:ss.txt’) as f:
for line in f:
print(line)
存储异常信息:如果需要将详细异常信息写入文件,可采用traceback调取详细异常信息。
import traceback
try:
print('step1')
val = 3/0
print('step2')
except:
with open('d/error.txt') as f:
traceback.print_exc(file = f)
python中的常见异常:
SyntaxError:语法错误
NameError:访问一个没有申明的变量
ZeroDivisionError:零除错误
ValueError:数值错误
TypeError:类型错误
AttributeError:访问对象的不存在属性
IndexError:索引越界
KeyError:关键字不存在
python对文件的操作?
操作文件采用python内置函数,写入时如果不指定编码,文件编码将采用系统的默认编码(windows是GBK,linux是UTF-8),这也是windows写入中文常常发生乱码的原因。为了保证安全性,建议采用finally或with打开文件,保证文件能被正确释放。
例:文件写入
f = open(文件名,打开方式,encoding=’utf-8’)
f.write(字符串)
f.close()
打开方式:
r:读模式
w:写模型
a:追加模式
b:二进制模式
+:读写模型
例2:文件读取
read(size):读取size个字符,read(),读取整个文件
readline():读取一行
readlines():按行存成列表
此外,如果需要为存储文件添加行号,可采用enumerate实现
enumerate:为元素添加编号
a = ['a','b','c']
b = enumerate(a)
print(list(b))
[(0, 'a'), (1, 'b'), (2, 'c')]
序列号与反序列化:对象属于结构化数据,无法直接存储或传输,需要采用序列化和反序列化手段完成对象的传输和存储,python采用内置pickle模块实现。
import pickle
pickle.dump(obj, file) #obj对象序列表后,存到file
pickle.load(file) #file反序列号成对象
python其他内置模块:
os#操作系统命令
import os.path #操作路径、目录
import shutil#用于文件拷贝和压缩
import zipfile#解压缩
python中的模块化编程?
python中可导入的模块包括:Python文件、包、DLL文件、共享库、自定义包等。
导入:import 模块名(导入整个模块)、rom 模块名 import 函数名(导入某个函数)
自定义包:本质是个文件夹,将类似的模块放到一起,每个包必须有个__init__.py文件
负责包的初始化、权限控制等。
模块搜索路径:模块能够被导入的前提是能够搜索到该模块,python搜索路径为:内置模块->当前路径->程序主目录->pythonpath环境变量目录->标准连接库目录->第三方目录->.pth文件(需要建立在site-packeages目录下)的内容->sys.path.append()添加的目录
模块的打包发布流程?
1.构建:统计目录下创建一个setup.py文件夹,内容如下:
from distutils.core import setup
setup(
name='nester',
version='1.0.0',
py_modules =['nester'],
author='jiale',
author_email='[email protected]',
url='http://www.headfirstlabs.com',
description='这是我的第一个发布安装文件'
)
2.终端运行命令,即可生成包
python setup.py sdist
3.本地安装
将包拷贝到第三方目录(site-packeages目录)
命令行输入 python setup.py install安装即可
4.在线发布
安装要求到pypi之后,即可采用pip install安装