python学习笔记6:模块,异常,else语句,with语句

python学习笔记6

模块

可用代码块的打包

1、引入

import random #引入random模块

2、OS模块

OS(Operating System)模块:操作系统模块,解决不同操作系统下模块不同的问题,不需要关系哪个系统需要哪个模块,OS模块会自动帮我们选择正确的模块并使用。

OS模块中的函数名效果
getcwd()返回当前工作目录
chdir(path)改变工作目录
listdir(path=’.’)列举指定目录中的文件名 (’.‘表示当前目录,’..'表示上一级目录)
mkdir(path)创建单层目录,如该目录已经存在则抛出异常
makedirs(path)递归创建多层目录,如该目录已存在则抛出异常
remove(path)删除文件
removedirs(path)递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
rename(old,new)将文件old重命名为new
system(command)运行系统的shell命令
支持所有平台的一些定义
os.curdir指代当前目录
os.pardir指代上一级目录
os.sep输出操作系统特定的路径分隔符(Win下为’\’,Linux下为’/’)
os.linesep当前平台使用的行终止符
os.name指代当前使用的操作系统(‘posix’,‘nt’,‘mac’,‘os2’,‘ce’,java’)

3、os.path模块

包含于os模块中,直接导入os模块即可使用,本质上是针对一个“路径格式”字符串的方法的打包。

函数名效果
basename(path)去掉目标路径,单独返回文件名
dirname(path)去掉文件名, 单独返回目录路径
join(path1[,path2[,…]])将path1,path2等各部分组合成一个路径名
split(path)分割文件名与路径,返回(f_path,f_name) 元组,如果全为目录,则将最后一个作为文件名
splitext(path)分离文件名与扩展名,返回(f_name,f_extension)元组
getsize(file)返回指定文件的尺寸,单位是字节
getatime(file)返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
getctime(file)返回指定文件的创建时间(浮点型秒数,可用…)
getmtime(file)返回指定文件最近的修改时间(浮点型秒数,可用…)
返回bool的函数效果
exists(path)判断指定路径是否存在
isabs(path)判断指定路径是否为绝对路径
isdir(path)判断指定路径是否存在且是一个目录
isfile(path)判断指定路径是都存在且是一个文件
islink(path)判断指定路径是否存在且是一个符号链接
ismount(path)判断指定路径是否存在且是一个挂载点
samefile(path1,path2)判断path1和path2是否指向同一个文件

绝对路径:如“D:\example\NMS\loveyou.txt"
相对路径:如“.\NMS\loveyou.txt”,“example\NMA”,"..\NMS\loveyou.txt"
符号链接:Win中为快捷方式
挂载点:入口目录,如C盘、D盘、E盘

4、pickle模块

永久保存,以二进制形式将文件写入硬盘中
pickling:将对象转化为二进制的形式的过程
unpicking:将二进制的形式转化为对象的过程

import pickle
my_list = [1,2,3.14,'s',['a',2]]
pickle_file = open('my_list.pkl','wb') #'wb'二进制写入模式
pickle.dump(my_list,pickle_file)
pickle_file.close()
pickle_file = open('my_list.pkl','rb') #'rb'二进制只读模式
my_list2 = pickle.load(pickle_file) #my_list2 = [1, 2, 3.14, 's', ['a', 2]]
pickle_file.close()

异常

异常类型

AssertionError断言语句失败
AttributionError尝试访问未知的对象属性
EOFErrorinput读取到EOF却没接受任何数据
FloatingPointError浮点计算错误
GeneratorExitgenerator.close()方法被调用的时候
ImportError导入模块失败的时候
IndexError索引超出序列的时候
KeyError字典中查找一个不存在的关键字
KeyBoardInterrupt用户输入中断键(Ctrl+C)
MemoryError内存溢出(可通过删除对象释放内存)
NameError尝试访问一个不存在的变量
NotImplementedError尚未实现的方法
OSError操作系统产生的异常(例如打开一个不存在的文件)
OverflowError数值运算超出最大限制
ReferenceError弱引用(week reference)试图访问一个已经被垃圾回收机制回收了的对象
RuntimeError一般的运行时错误
StopIteration迭代器没有更多的值
SyntaxErrorPython的语法错误
IndentationError缩进错误
TabErrorTab和空格混合使用
SystemErrorPython编译器系统错误
SystemExitPython编译器进程被关闭
TypeError不同类型间的无效操作
UnboundLocalError访问一个未初始化的本地变量(NameError的子集)
UnicodeErrorUnicode相关的错误(ValueError的子类)
UnicodeEncodeErrorUnicode编码时的错误(UnicodeError的子类)
UnicodeDecodeErrorUnicode解码时的错误(UnicodeError的子类)
UnicodeTranslateErrorUnicode转换时的错误(UnicodeError的子类)
ValueError传入无效的参数
ZeroDivisionError除数为零

异常检测并处理(try语句)

try-except语句:
try:
	检测范围
except Exception[as reason]:
	出现异常后处理的代码

如:

try: 
    print(imp)    #检测到异常后会跳到except,从而忽略try中剩下的语句
except NameError: 
    print('名字异常') #名字异常
try:
    print(imp)
except NameError as reason:
    print('名字异常+' + str(reason)) #名字异常+name 'imp' is not defined,reason是NameError类型的
try: 
    print(imp)    
   	sum = 1 + '1'
except (NameError,TypeError): #任意检测到一个异常都会执行
	print('出错了') 
try-finally语句

若被忽略的try中的语句中有文件关闭操作时有出问题,因此有try-finally语句解决问题

try:
	...
except:
	...
finally: 
	无论如何都是会执行的代码
raise语句(用于引发异常)
raise ZeroDivisionError('除数为零的异常') #直接引出异常并作解释

else 语句

①与if配合

if 条件:
	...
else: #条件不成立时执行
	...

②与while配合

while 条件:
	...
else: #while执行完后执行(没有break的前提下)
	...

③与for配合

for i in range(10):
	...
else: #for循环执行完后执行(没有break的前提下)
	...

④与try配合

try:
	...
except ...:
	...
else: 
	没有异常时执行的语句

with语句

当文件不用时自动关闭,减少了close()语句,更加方便和安全

with open('data.txt','w') as file1 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值