- 食用说明:本笔记适用于有一定编程基础的伙伴们。希望有助于各位!
文件读取
文件操作比较常见,通常我们需要对文件进行读取操作:
f1 = open('assets/Files/测试文件.txt', 'r', encoding='UTF-8')
# 辨别是否可读
print(f1.readable())
# 读取具有连贯性,每次读取一行固定字节,无参数时读取所有内容
print(f1.read(5))
# 读取文件行,读取具有连贯性,每次读取一行固定字节,无参数时读取一整行
print(f1.readline(2))
# 读取文件行,读取具有连贯性,无参数读取所有内容,并返回列表,有参数时即读取的行数,同样返回列表
print(f1.readlines(1))
通常情况下,我们会对文件循环进行读取,或是对文件所有内容读取后逐步分析:
fileLinesList = f1.readlines()
f1.close()
i1 = iter(fileLinesList)
while True:
try:
print(next(i1))
except StopIteration:
print('文件读取完毕')
break
- 上面的语句是简单的文件读取方式,对读取到的文件行列表进行迭代
文件写入
读取和写入的形态类似,具体操作如下:
f1 = open('assets/Files/测试文件.txt', 'r+', encoding='UTF-8')
print(f1.writable())
f1.seek(0, 2)
newLinesList = ["Hello world1\n", "Hello world2\n", "Hello world3\n", "Hello world4\n"]
for item in newLinesList:
f1.write(item)
f1.seek(0)
print(f1.read())
具体的读写模式:
一个综合运用:
infoList = [
{"name": "Polaris", "age": 18, 'sex': '男'},
{"name": "PolarisX", "age": 19, 'sex': '男'},
{"name": "PolarisY", "age": 20, 'sex': '男'},
{"name": "PolarisZ", "age": 21, 'sex': '女'},
]
f1 = open('assets/Files/info.txt', 'w', encoding='UTF-8')
# 写入标头
for key in infoList[0].keys():
f1.write(key)
f1.write('\t')
f1.write('\n')
# 写入数据
for item in infoList:
for key in item.keys():
f1.write(str(item[key]))
f1.write('\t')
f1.write('\n')
if f1.readable():
print(f1.read())
- 上面的例子中,我们将一个表数据写入到了文件中
异常捕获
我们在运行程序时,常会遇到各种异常导致程序中断,解决方式如下:
try:
f1 = open('assets/Files/abc.txt', 'r', encoding='UTF-8')
except Exception as e:
print(COLOR.RED + '文件读取失败')
print(COLOR.BLUE + str(e))
- 当我们希望打开一个文件时,而此文件不存在时,会报错,为了捕获此异常可以通过try...except来取得异常
- 此处使用Exception捕获所有异常,并使用as进行别名,
- 具体的异常有很多,具体可以查看官方文档:具体异常
try:
f1 = open('assets/Files/abc.txt', 'r', encoding='UTF-8')
except Exception as e:
print(COLOR.RED + '文件读取失败')
print(COLOR.BLUE + str(e))
else:
print(f1.read())
finally:
print(COLOR.WHITE + '文件读取操作完毕')
- 异常未触发时会进入else语段
- finally为必定触发语段,无论是否触发异常
生成一个异常
当然有的时候我们希望中断程序,提示异常:
raise Exception('自定义异常')
- 我们需要在Exception方法中填写异常内容,用于中断程序时的异常提示
断言异常
断言异常用于简化普通的判断异常:
# 当变量大于5时,报错
num1 = 10
# 常规的判断
if num1 >= 5:
raise Exception('变量大于5')
# 快捷的判断
assert num1 < 5, '变量大于5'
- 上处代码,就是一个简单断言异常,其格式可以等效于:
语法格式如下:
assert expression
等价于:
if not expression: raise AssertionError
模块的导入
- 在导入操作时,我们使用from module import * 可以通过在模块中加入‘__all__’变量定义来限制全导入方式,具体意义如下:
__all__ = [
'add',
]
def add(*args):
return sum(args)
def minus(mainNum, *subNums):
return mainNum - sum(subNums)
- 上面的这串代码定义两个方法,我们希望只导出add,故将其加入到all变量中,当我们使用from module import *时就会限制minus方法无法被使用,但如果使用其他方式依旧可以导入此方法