1. Python 是如何处理异常的?
'''
Python 如何处理异常的?
最简单的方式如下
try:
代码块(将可能出错的代码放入到 try 中)
except:
代码块(try 出错就执行)
else:
代码块(try 没有出错执行)
'''
try:
a = 1 / 0
except Exception as e:
print("出错了!!!")
else:
print('没有出错!')
'''
异常传播
函数中出现异常,如果对异常进行了处理,那么异常不会进行向上传递,否则就一直传递到调用该函数的地方,如果还是没有处理异常就一直一直往上传递,直至主模块(__main__)
'''
def function():
print('cris')
10 / 0
try:
function()
except Exception as e:
print('➗')
else:
pass
try:
1 / 0
except Exception as e:
print('error')
else:
pass
finally:
print('james')
class myError(Exception):
pass
def add(a: int, b: int)->int:
if a < 0 or b < 0:
raise myError("参数不能为负数")
else:
return a + b
print(add(1, 2))
print(add(1, -1))
2. Python 中常用的文件处理语法(重点)
'''
1. 打开文件
open 函数
open(文件名,[...]): 文件名可以是相对路径,也可以是绝对路径(windows 可以使用/代替\,或者使用 \\,或者使用 r'\' 原始字符串忽略所有转义字符);../ 表示上级目录
2. 关闭文件
文件对象.close() / with open(file_name) as file_obj 语句可以自动关闭文件流
3. 文件类型:纯文本文件和二进制文件,open方法打开文件默认以文本模式打开文件
编码格式:默认 gbk,建议设置为 utf-8(encoding='utf - 8')
4. 操作文件
文件对象.read():读取文本所有内容为字符串,对于大文件不要使用这个方法
文件对象.readLine():单行读取文本内容
文件对象.readlines():一次性将读取到的文本封装为一个列表返回,每个元素就是读取到的每行文本数据
5. 文件的迭代读取:
while 循环
for line in file_obj
6. 向文件写入内容
文件对象.write(字符串)
'''
'''
try:
with open(file_name, encoding='utf - 8') as file_obj:
# size 参数可以用来指定读取的字符数量(默认读取模式下 't'),默认是-1,如果读取到文本末尾,返回空字符串
content = file_obj.read(3)
print(content)
# 还可以使用 len 函数计算读取的文本内容的字符数(包括换行符)
print(len(content))
except Exception as e:
raise e
'''
'''
try:
with open(file_name, encoding='utf - 8') as file_obj:
# while True:
# content = file_obj.readlines()
# if not content: # 空字符串可以视为False
# print('读取完毕')
# break
# print(content)
for x in file_obj:
print(x)
except Exception as e:
raise e
'''
file_name = 'test.txt'
with open(file_name, 'w', encoding='utf-8') as file_obj:
result = file_obj.write('hello,cris\n')
print(result)
file_obj.write('good morning!\n')
file_name = 'test1.txt'
with open(file_name, 'a', encoding='utf-8') as file_obj:
file_obj.write('hehe,simida')
file_name = 'test2.txt'
with open(file_name, 'x', encoding='utf-8') as file_obj:
file_obj.write("hehe")
3. Python 处理二进制文件
file_name = 'c:/users/zc-cris/Desktop/LinuxProbe.pdf'
'''
读取文件的时候,有两种模式:
1. 't' 表示读取文本文件(默认),'r' 其实默认就是 'rt'
2. 'b' 表示读取二进制文件
3. 读取文件千万不要一次性读取,性能非常差
Python 中的文件对象不用自己关闭流
'''
with open(file_name, 'rb') as file_obj:
new_file_name = 'LinuxProbe.PDF'
with open(new_file_name, 'wb') as new_file_obj:
buf = 1024 * 100
while True:
content = file_obj.read(buf)
if content:
new_file_obj.write(content)
else:
break
4. seek 和 tell 方法
'''
tell方法可以用于查看当前读取的位置/文件指针的位置
seek方法可以用来修改当前读取的位置/文件指针的位置,参数的单位为字节,一般用来处理英文文本
file_obj.seek(10)
file_obj.seek(20,0)
file_obj.seek(30,1)
file_obj.seek(-2,2)
第一个参数是指针移动的距离
第二个参数表示指针的相对位置:0 表示从文件头开始计算,默认值;1 表示从上一次指针停下的位置开始计算;2 表示从文件末尾开始计算,此时第一个参数一般都是负数,表示从后往前读取的距离
'''
with open('test.txt', 'rb') as file_obj:
content = file_obj.read(3)
print('当前读取到了---》', file_obj.tell())
file_obj.seek(34)
print('当前读取到了---》', file_obj.tell())
print(content)
'''
with open('test.txt','r',encoding='utf-8') as file_obj:
content = file_obj.read(3)
print(content) # 程序猿
'''
5. 文件操作之 os 包的常用 API
import os
from pprint import pprint
'''
# 1. 获取当前文件的目录结构,参数默认是'.',可以设置为 '..' 表示上一级目录
content = os.listdir()
pprint(content) # 返回列表,每个元素就是指定目录下的文件
# 2. 获取当前所在目录
content = os.getcwd()
pprint(content) # 'C:\\Users\\zc-cris\\Desktop\\Python学习日记\\语法学习\\五 异常和文件处理'
# 3. 切换目录,类似 cd ..
os.chdir('..')
content = os.getcwd()
pprint(content) # 'C:\\Users\\zc-cris\\Desktop\\Python学习日记\\语法学习'
os.chdir('C:/')
content = os.getcwd()
pprint(content) # 'C:\\'
'''
os.rename('cris.txt', 'new_cris.txt')