1.文件
(1)文件也是一个对象
(2)打开文件
f = open(文件名,模式),文件名可以是相对路径或者绝对路径
模式有:"r" 只读、“w” 写入、“a” 追加,“r+/w+”读写
使用 'r' 或 'U' 模式打开的文件必须是已经存在的。 使用 'w' 模式打开的文件若存在则首先清空, 然后(重新)创建。 以 'a' 模式打开的文件是为追加数据作准备的, 所有写入的数据都将追加到文件的末尾。 即使你 seek 到了其它的地方。 如果文件不存在, 将被自动创建, 类似以 'w'模式打开文件。
(3)属性
(4)关闭
(5)写入
write()方法可将任何字符串写入一个打开的文件。
write()方法不在字符串的结尾不添加换行符('\n'):
主动调用close()写缓存同步到磁盘,或者写入数据量大于或等于写缓存,写缓存同步到磁盘
(6)读取
read(size)方法从一个打开的文件中读取一个字符串。size若不填则为尽量多的字符串,若填了则为结束位置。
readline()读取当前行,允许有参数
readlines()读取剩余行,返回一个字符串列表
(7)文件放置
tell()方法告诉你文件内的当前位置;即下一次的读写会发生在文件开头这么多字节之后:
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
(8)重命名
Python的os模块提供了帮你执行文件处理操作的方法,必须先导入它,才可以调用。
os.rename(当前文件名,新的文件名
(9)删除文件
同样需要导入os模块,才可以调用。
os.remove(文件名)
2.错误和异常
(1)错误类型
OverflowError数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AttributeError对象没有这个属性
IOError 输入/输出操作失败
IndexError 序列中没有此索引(index)
NameError 未声明/初始化对象 (没有属性)
SyntaxError Python 语法错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
(2)try-except处理异常
try-except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
except若不带任何异常类型,即捕获所有发生的异常。但是不能捕获语法错误异常,如if a,因为是运行前错误而不是运行时错误
也可带多种类型except(Exception1[, Exception2[,...ExceptionN]]]):
错误类型后面跟着变量e,可以print错误提示
(3)try-finally语句
语句是否发生异常都将执行最后的代码。将异常保留下来交给系统处理,本身不处理异常。
作用:为处理异常事件提供清理机制,用来关闭文件或者释放系统资源。
可以使用except语句或者finally语句,但是两者不能同时使用。else语句也不能与finally语句同时使用。
(4)try-except-finally
若try语句没有捕获异常,执行完try代码段后,执行finally
若try捕获异常,首先执行except处理异常,然后执行finally
(5)try-except-else-finally
若try语句没有捕获异常,执行完try代码段后,执行else代码段,最后执行finally
若try捕获异常,首先执行except处理错误,然后执行finally
(6)try-finally-except
当在try块中抛出一个异常,立即执行finally块代码。
finally块中的所有语句执行后,异常被再次提出,并执行except块代码。
(7)with语句
用来代替try-except-finally语句,使代码更加简洁
context表达式返回是一个对象
var用来保存context返回对象,单个返回值或元组
with_suite使用var变量对context返回对象进行操作
打开1.txt文件
f变量接收文件对象返回的对象
with中的代码执行完成后,关闭文件
程序使用了上下文管理器 (with...as...)。上下文管理器有隶属于它的程序块。当隶属的程序块执行结束的时候(也就是不再缩进),上下文管理器自动关闭了文件
运用情况:①文件操作 ②进城之间互斥操作:例如互斥锁 ③支持上下文的其他对象
(8)raise主动抛出异常
(9)assert语句
断言语句:assert语句是用于检测表达式是否为真,如果为假,引发AssertionError错误
(10)自定义异常
通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。
自定义异常只能主动触发。
3.模块和包
(1)概念介绍
#test.py 自身模块名test
import p1.util 引用p1包的模块util
print p1.util.f(2) 调用p1.util的函数f()
如何区分包和普通目录 包下面有个__inti__.py文件
(2)如果我们只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句:
(3)可以给函数起个“别名”来避免冲突:as
(4)如果导入的模块不存在,Python解释器会报 ImportError 错误
4.作用域
(1)函数作用域LEGB L>E>G>B
L:local 函数内部作用域
E:enclosing 函数内部与内嵌函数之间,即闭包
G:global全局作用域
B:bulid-in 内置作用域 list,tuple之类