文件操作比较常见,通常我们需要对文件进行读取操作:
- 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:
- 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 + '文件读取操作完毕')
当然有的时候我们希望中断程序,提示异常:
raise Exception('自定义异常')
断言异常用于简化普通的判断异常:
- # 当变量大于5时,报错
- num1 = 10
- # 常规的判断
- if num1 >= 5:
- raise Exception('变量大于5')
-
- # 快捷的判断
- assert num1 < 5, '变量大于5'
语法格式如下:
assert expression
等价于:
if not expression:
raise AssertionError

- __all__ = [
- 'add',
- ]
-
-
- def add(*args):
- return sum(args)
-
-
- def minus(mainNum, *subNums):
- return mainNum - sum(subNums)
