OS模块基础
-
获取当前操作系统信息
os.name : 获取操作系统名(如 windows用字符串“nt”表示)os.sep :获取当前系统平台的路径分隔符。(windows用 \ 作为路径分隔符)
os.getcwd():获取当前工作目录。
(例如,os.getcwd() + os.seq + ‘data’ + os.seq + ‘data.txt’ 表示获取当前目录下的子文件夹data中的data.txt文件。)os.environ : 一个包含所有环境变量值的映射对象,在Python控制台下直接输入os.environ即可查看当前所有环境变量。
(查看方式:os.environ[key] 或os.getenv(key)根据键名返回环境变量值)os.listdir(path = ‘.’) :获取指定路径下的所有文件和目录的名字。其中path参数是指定路径,默认值’.'表示当前路径。返回值是路径下所有文件和目录名字组成的列表。
-
目录创建和删除
(1)创建目录:mkdir(path) 和 makedirs(path)
参数path为要创建的目录。
mkdir只能创建一个目录(不能创建子目录),而makedirs可以创建多重目录。
不能创建已经存在的目录。(2)删除目录:os.rmfir(path) 和 os.removedirs(path)
删除path参数路径的目录。
后者可以删除多重目录,从最里面一层的目录开始往前删除,直到删光或者遇到一个不为空的目录。
注意:所删除的目录必须为空目录。 -
路径
(1)相对路径:相对于当前工作目录指定的路径。
绝对路径:从最顶层目录开始的完整路径。(2)获取相对路径的绝对路径。
方法 :os.path.abspath(path)
Tip:编程时最好使用相对路径,方便不同机器上运行。(3)获取文件所在目录
方法:os.path.dirname(path)
作用:返回path中去除文件名后的路径,path参数是文件的路径。(4)获取文件名
方法: os.path.basename(path)
作用:返回path中的文件名。(5)同时获得目录与文件名
方法:os.path.split(path)
作用:获取一个(目录,文件名)格式的元组。
Tip:若path不是文件路径而是目录路径,则获取的是(目录,最后一个目录)的元组。(6)分离文件路径和文件拓展名
方法:os.path.splitext(path)
作用:获取一个(没有文件扩展名的文件路径,扩展名)元组。(7)路径连接
方法:os.path.join(path,*path)
作用:用分隔符将所有参数连接起来,返回一个路径。 -
条件判断
(1)os.path.isfie(path)
作用:判断路径目标是否为文件。
os.path.isdir(path)同理,判断是否为目录。(2) os.path.exists(path)
作用:判断路径是否存在。(3)os.path.isabs(path)
作用:判断是否为绝对路径。
文件操作
-
文件打开和关闭
(1)文件打开、关闭
方法 :open(filename,mode=‘r’)
参数filename:要打开的文件路径。
参数mode:文件打开方式。
返回值:文件对象。
关闭文件:文件对象.close()打开方式:
打开方式组合:
Tip:文件中有一个文件指针,指向当前要读写的位置。若打开方式中有’a’,则文件指针指向文件的末尾,否则指向文件开头。
(2)with语句
作用:防止忘记关闭文件,释放资源。
例子:with open(…) as file:
-
文件对象的write和read
(1)f.write(str)
作用:将字符串str写入文件对象f。
返回值:写入文件的字符数。(2)f.read(n=-1)
作用:从文件中读取数据并返回。
参数n:要读取的字节数,默认-1表示全都读取。 -
文件对象的readline、readlines和seek
(1)f.readline()
作用:读取一行数据并返回。(2)f.readlines()
作用:按行读取所有数据。
返回值:列表
Tip:可用list(f),返回结果相同。(3)f.seek(pos,whence = 0)
作用:移动文件指针,实现随机读写。
参数pos:要移动的字节数。
参数whence : 参照位置,默认0表示参照位置为文件开头。1表示当前指针位置,2表示文件末尾。
返回值:无。
Tip:该方法主要用于二进制文件,对于文本文件只支持以文件开头作为参照位置。 -
csv文件的读写
(1)生成writer对象
方法:csv.writer(csvfile)
参数csvfile是一个具有write方法的对象。如果将open函数返回的文件对象传给csvfile,需要加上一个关键字参数newline=",(2)csv文件的写操作
方法1: writer.writerow(row)
参数row :要写入到csv文件中的一行数据。方法2:writerows(rows)
参数rows:要写入csv文件中的多行数据。(3)生成reader对象
方法:csv.reader(csvfile)
参数csvfile:一个迭代器,可以像(1)中一样用open。
返回值:reader对象,是个可迭代对象,用for循环可以按行读数据,每次遍历返回一个字符串组成的列表。
异常
-
定义:异常是指因程序运行时发生的错误而产生的信号。若程序没有对异常进行处理,程序会抛出该异常并停止程序运行。为了保证程序稳定运行,我们需要捕获可能发生的异常并对其进行处理。
-
分类:语法错误和逻辑错误。
-
常见逻辑错误
-
异常的处理(try except语句)
(1)格式:
try:
要捕获的语句块
except 异常类型1:
处理语句
except 异常类型2:
处理语句
……
(2)处理过程
执行要捕获异常的语句块->发生异常,根据异常类型,执行匹配的处理语句->都不匹配,异常会传给更外层的try except语句->异常没有被任何的except语句块处理,则抛出,停止。(3)Tip:except后面的异常类型可以为1一个,多个(逗号隔开),或者0个(不写,表示捕获所有异常)
-
其它处理语句
(1)else语句:可选,若try中的代码块没有发生异常,则结束后会执行else语句。
(2)finally:无论是否try中的语句发生里异常,finally语句都会执行。
(3)raise:写在try代码块中,可以人工产生异常。(例:if num==0 : raise ValueError(“输入数字不能为0!”) -
断言
格式: assert 布尔表达式
作用:成立则继续执行,不成立则触发AssertionError异常。 -
自定义异常
格式:以BaseExcetipn类作为父类创建一个子类。(略)