1.os:全称是 operating system,可以通过os模块方便的使用操作系统相关的功能
2.常用基础操作
os.name:当前操作系统的名字,windows用’nt’表示,linux用’posix’表示
os.sep:当前操作系统的路径分隔符,windows用’\\‘表示,linux用’/'表示
os.getcwd:获取当前工作目录
os.environ/os.getenv:获取环境变量值
os.listdir:获取指定路径下的所有文件和目录的名字,返回数据列表
1.os.mkdir方法:可以创建目录,但是只能创建路径中最后一个目录,它要求之前的目录都必须存在
2.os.makedirs方法:可以创建目录,可以依次创建路径中不存在的目录
3.对于mkdir和makedirs方法,如果要创建的目录已经存在,则程序会抛出FileExistsError异常,对于mkdir方法,如果之前的目录不存在,会抛出FileNotFouondError异常
4.os.rmdir方法:可以删除指定路径的最后一层目录,但是只能删除空目录,如果待删除目录不空,程序会抛出OSError异常
5.os.removedirs方法:可以删除指定路径的多层目录,和rmdir函数相同,只能删除空目录,不同在于,rmovedirs方法从最后一层往前删除,直到遇到不为空的目录为止,停止删除
6.对于rmdir和removedirs方法,如果要删除的目录不存在,则程序会抛出FileNotFoundError异常
1.相对路径:相对于当前工作目录指定的路径
2.绝对路径:从最顶层目录开始所给出的完整路径
3.'.‘表示当前目录,’…'表示上一层目录
4.编写程序时应该尽量使用相对路径,这样程序不依赖具体的顶层目录,从而具备良好的移植性
4.os.path.abspath方法:可以获取指定相对路径的绝对路径
5.os.path.dirname方法:可以获取文件所在目录的路径
6.os.path.basename方法:可以获取指定路径的文件
7.os.path.split方法:可以将指定路径分割成路径名和最后的目录或文件名
8.os.path.splitext方法:可以将指定路径分割成路径和文件扩展名
9.os.path,join方法:可以将多个字符串用系统分隔符连接起来,形成新的路径
1.os.path.isfile方法:可以判断指定路径目标是否为文件
2.os.path.isdir方法:可以判断指定路径目标是否为目录
3.os.path.exists方法:可以判断指定路径是否存在
4.os.path.isabs方法:可以判断指定路径是否为绝对路径
1.程序运行时,数据都存储在内存中,当程序执行完毕后,内存中的数据将丢失。文件就是用来长期保存数据的。
2.open方法:可以打开一个文件,语法格式为:open(filename,mode=‘r’),其中,filename是要打开文件的路径,mode是打开文件的方法,默认’r’表示以只读方法打开文件
3.常用的打开文件方法:
‘r’:以只读方法打开文件,不允许写数据(read)
‘w’:以只写方法打开文件,不允许读数据。文件已存在内容时,会先清空文件,文件不存在时,会创建文件(write)
‘a’:以追加写方式打开文件,不允许读数据。文件已存在内容时,会在内容末尾追加内容,文件不存在时,会创建文件(append)
‘b’:以二进制方式打开文件(binary)
‘t’:以文本方式打开文件(text)
‘+’:以读写方式打开文件,可读可写
4.文件中存在一份文件指针,指向当前要读/写的数据位置
5.打开文件的方式可以进行组成:
‘r+’/‘rt+’:以文本方式打开文件,可读可写,文件不存在时会报错
‘w+’/‘wt+’:以文本方法打开文件,可读可写,文件已存在内容时,会先清空文件,文件不存在时,会创建文件
‘a+’/‘at+’:以文本,追加方式打开文件,可读可写,文件已存在内容时,会在内容末尾追加内容,文件不存在时,会创建文件
‘rb+’:与’r+'类似,只是用二进制打开文件
‘wb+’:与’w+'类似,只是用二进制打开文件
‘ab+’:与’a+'类似,只是用二进制打开文件
6.close方法:可以用来关闭文件,当使用open方法打开文件后,必须使用close方法将文件关闭,来保证文件资源的及时释放
7.with语句:可以用来让系统在文件操作完毕后自动关闭文件
1.write方法:可以用来将字符串写入文件中,语法格式是 write(str),str是待写入的字符串,函数返回写入到文件的字节数
2.write方法写入字符串时,不会自动添加换行符,如果需要加换行的话,需要人为添加换行符’\n’
3.read方法:可以用来从文件中读取字符串,语法格式是 read(n=-1),n指定了要读取的字节数,默认-1表示一次读取文件的所有内容,函数返回从文件读取的内容
1.readline方法:可以每次从文件中读取一行数据
2.readlines方法:可以按行从文件读取所有数据,函数返回按行读取的数据列表,使用list(file),也可以实现和readlines方法相同的效果
3.seek方法:可以移动文件指针,实现文件的随机读写。语法格式为:seek(pos,whence=0),其中pos是指针要移动的字节数,whence是参照位置,默认0表示以文件开头为参照位置,1表示以当前指针为参照位置,2表示以文件尾为参照位置
4.tell方法:可以获取当前文件指针的位置
5.文件的读写方式分为:顺序读写和随机读写
顺序读写:按照从开头到结尾的顺序依次对数据读写
随机读写:可以直接让文件指针指向某个位置,并对该位置的数据进行读写。因为这种方式没有固定顺序的,能做到随机指定位置操作数据,所以叫做随机读写
6.当以文本方式打开文件后,只支持以文件开头位置作为参照位置,进行文件指针的移动。当以二进制方式打开文件后,可以支持全部的参照位置。所以通过seek方法实现的随机读写,主要用于二进制文件
1.一维数据:元素的值只受一种因素影响。对于一维有序数据,可以用列表存储,对于一维无序数据,可以用集合存储
2.二维数据:元素的值受两种因素影响。可以用二维列表存储二维数据
1.CSV:Comma-Separated Values,意思是用逗号分开的值,它是一种国际通用的一维,二维数据存储格式,其对应的文件扩展名为.csv,可以用excel软件直接打开
2.csv文件中每一行对应一个一维数据,一维数据之间用英文半角逗号分隔,逗号两边不需要空格,对于缺失元素,也要保留逗号,使得其他元素的位置可以一一对应
3.csv文件的第一行可以是列标题,也可以直接存储数据,即没有列标题
4.csv.writer方法:可以生成一个writer对象,使用该对象可以将数据以逗号分隔的形式写入csv文件中,语法格式为 writer(csvfile),其中csvfile是一个具有write方法的对象,如果将文件对象传入writer方法,则使用open生成文件对象时要添上“newline = ‘’ ”,避免换行符的转换问题
5.writer.writerow方法:向csv文件写入一行数据,语法格式为 writerow(row),其中row是要写入csv文件的一行数据
6.writer.writerows方法:向csv文件写入多行数据,语法格式为 writerows(rows),其中rows是要写入csv文件的多行数据
7.csv.reader方法:可以生成一个reader对象,使用该对象可以将以逗号分隔的数据从csv文件读出来,语法格式为:reader(csvfile),其中csvfile是一个迭代器,同样的,使用文件对象实参时,也需要在open方法加上“newline = ‘’ ”
1.异常是指:因程序运行时发生错误而产生的信号
2.如果程序不对产生的异常信号进行处理,程序就会抛出异常并停止程序运行。为了保证程序的稳定性和容错性,就需要在程序中捕获可能的异常并对其进行处理,使得程序不会因为异常而终止
3.程序异常可以分为:语法异常和逻辑异常
语法异常:编写的代码不符号编程语言的语法要求
逻辑异常:编写的代码符合语法,但是不被系统或当前环境支持
4.常见的逻辑异常:
AssertionError:assert语句失败
AttributeError:访问一个属性失败
ImportError:导入一个模块失败
IndexError:访问序列数据的下标越界
KeyError:访问一个映射对象(如字典)中不存在的键
MemoryError:当一个操作使内存耗尽
NameError:当引用一个不存在的标识符
OverflowError:算术运算结果超出表示范围
RecursionError:超过最大递归深度
RuntimeError:产生其他所有类别以外的错误
StopIteration:迭代器中没有下一个可获取的元素
TabError:使用不一致的缩进方式
TypeError:传给操作或函数的对象类型不符合要求
UnboundLocalError:引用未赋值的局部变量
ValueError:内置操作或函数接收到的参数具有正确类型但不正确值
ZeroDivisionError:除法或求模运算的第2个操作数为0
FileNotFoundError:要访问的文件或目录不存在
FileExistsError:要创建的文件或目录已存在
1.try语句包括待捕获异常的执行语句,except语句根据异常类型捕获匹配的异常进行处理
2.如果没有异常,except语句都不会执行,如果存在异常,except语句捕获成功,则执行匹配的except语句,程序正常向下执行,如果存在异常,except语句捕获失败,则程序向外层抛出异常,如果外层语句无法解决,则程序抛出异常并停止运行
3.一个except语句可以同时负责捕获多个异常,其参数可以是一个异常元组
1.else语句:是try-except语句的一个可选项,如果try语句没有异常,则执行else语句,否则不执行
2.finally语句:是try-except语句的一个可选项,无论try语句有没有异常,finally语句都会执行
3.raise关键字:可以自行抛出异常,不必等待系统自动产生异常
1.assert:断言,可以用来判断一个条件是否成立,如果成立,程序继续执行,如果不成立,程序抛出AssertionError异常
2.自定义异常:以BaseException类为父类创建自定义异常类