主要内容:
- 文件与文件夹的操作
- 异常处理
一、文件与文件夹的操作
#test.txt文件
写入文件内容新内容
第二行内容文件
第三行内容是这样的
第四行内容有时是这样的
打开文件
open方法:参数有:文件名(有绝对路径和相对路径),打开模式,寄存区大小,编码方式
a=open('test.txt','r',buffering=0,encoding='utf-8')
打开模式有:
r:只读模式,文件不存在会提示错误
w:只写模式,文件存在,则会被覆盖,不存在,则创建文件
a:追加模式,文件存在,则会打开,不存在,则会创建文件
r+:读写模式,将指针调到文件内容的头部
w+:读写模式,文件内容存在,则会被覆盖,不存在,则会写入
a+:追加读写模式,将指针调到文件内容的末尾
buffering 寄存缓冲大小:
=0:不会寄存
=1:访问文件会寄存行
>1:寄存缓冲大小
<0:寄存缓冲大小为系统默认
读取数据
read(num)方法:读取文件内容,没有参数,则读取文件所有内容,num指定读取长度
a=open('test.txt','r',encoding='utf-8')
count=a.read() #读取所有内容
rlen=a.read(10) #读取前10个字符
print(count)
print(rlen)
readlines 方法:可以按行的方式,把整个文件的内容一次性读取,返回的是一个列表,每一行为列表里的一个元素。
b=open('test.txt','r+',encoding='utf-8')
rline=b.readlines() #按行读取
print(rline)
b.close()
#输出的内容是:
['写入文件内容新内容\n', '第二行内容文件\n', '第三行内容是这样的\n', '第四行内容有时是这样的']
结合open方法和for循环语句,实现文件内容逐行输出
file=open('test.txt','r',encoding='utf-8')
for line in file:
print(line)
file.close()
写入数据
write(str参数) 方法:将字符串写入文件中
a=open('test.txt','w',encoding='utf-8')
a.write('写入文件内容') #写入字符串内容
a.close()
writelines(list参数)方法:将列表中的字符串写入文件中
a=open('test.txt','w',encoding='utf-8')
slist=['添加1','添加2','添加3']
a.writelines(slist)
a.close()
关闭文件
close 方法:关闭打开的文件
另:为了避免程序发生错误,导致close方法未被执行,可以使用 with关键字来打开文件。
with open('test.txt','r',encoding='utf-8') as file: #会自动判断什么时候将文件关闭
data=file.readlines()
print(data)
文件夹的操作(需要引用os模块)
os.getcwd() #获取当前路径
os.listdir(path) #获取指定路径下的文件或文件夹名字的列表
os.path.isfile(path) #判断是否是一个文件
os.path.exists(path) #判断文件是否存在
os.rename('旧文件名','新文件名') #重命名
eg:os.rename('test.txt','newtest.txt')
os.remove(path) #删除文件
os.mkdir(文件夹名称) #创建文件夹
os.makedirs(主文件夹/次级文件夹) #创建多级文件夹
os.rmdir(path) #删除文件夹
二、异常处理
格式:
try:
语句
except 异常类型: #捕获异常
异常处理的代码
except 异常类型 as 别名:
print(别名) #会输出异常的具体信息
except (异常类型1,异常类型2,...) as 别名:
print(别名)
else:
没有异常处理时的代码
finally:
无论是否有异常,最终执行的代码
异常类型:
————————————————————————
Exception:所有异常的基类
NameError:没有声明的变量
ZeroDivisionError:除数为0
SyntaxError:语法错误
IndexError:索引超出序列范围
KeyError:请求一个不存的字典关键字
IOError:输入输出错误
AttributeError:未知对象属性
ValueError:参数类型错误
EOFError:不期望的文件或输入结束
————————————————————————
assert 断言语句:当判断表达式为真时,什么都不做,为假时,抛出异常
格式:assert 表达式[,reason
try:
assert 1==3,‘1 is not equal 3!’
except AssertionError,reason:
print('%s:%s'%(reason.__class__.__name__,reason)) #输出:Assertion:1 is not equal 3 !
with 上下文关联语句:目的是从流程图中把try、except、finally关键字和资源分配释放相关的代码全部去掉。
格式:with context_expr as 别名
with open('test.txt','r') as f:
for line in f:
print(line)
raise 可以主动抛出一个指定的异常
格式:raise 异常类型[,arg(抛出异常自定义的信息)
sys模块回溯异常
import sys
try:
代码块
except:
tuple=sys.exc_info()
print(tuple)
其中,sys.exc_info方法返回的是一个三元组(type异常类型,value 异常信息,traceback包含调用栈信息对象)