文章目录

  • 1. Python 是如何处理异常的?
  • 2. Python 中常用的文件处理语法(重点)
  • 3. Python 处理二进制文件
  • 4. seek 和 tell 方法
  • 5. 文件操作之 os 包的常用 API

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# except 后面的异常类型决定将要捕获的异常类型,并执行 except 语句块的代码
try:function()
except Exception as e:print('➗')
else:pass# 最完整异常处理语法: try 语句必须,else语句可选,except 和 finally 至少有一个
try:1 / 0
except Exception as e:print('error')
else:pass
finally:print('james')# 自定义异常以及抛出异常(raise)class myError(Exception):passdef add(a: int, b: int)->int:if a < 0 or b < 0:raise myError("参数不能为负数")else:return a + bprint(add(1, 2))    # 3
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_obj6. 向文件写入内容
文件对象.write(字符串)
'''# file_name = "demo.txt"
# file_obj = open(file_name)
# print(file_obj)   # <_io.TextIOWrapper name='demo.txt' mode='r' encoding='cp936'># content = file_obj.read()
# file_obj.close()
# print(content)# 可以自动关闭文件以及捕获异常
'''
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
'''# 使用 open 方法的时候最好指定文件操作权限,否则无法对文件进行写操作
# 在执行写操作的时候,如果文件名不存在,将会自动创建该文件
# r 表示只读,w 表示可写并覆盖以前的内容,a 表示追加内容(文件不存在,也会创建文件)
# + 表示为操作符增加功能:r+ 表示可读写(文件不存在则报错),w+ 表示可独写(文件不存在则报错),a+ 表示可读追加(文件不存在则报错)
# x 用来新建文件,文件存在则报错,不存在就创建,有写的权限但是没有读权限
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")# content = file_obj.readline();# print(content)

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:# 读取文本文件时,size 参数默认字符# 读取二进制文件时,size 参数默认字节# content = file_obj.read(100)# print(content)new_file_name = 'LinuxProbe.PDF'with open(new_file_name, 'wb') as new_file_obj:# 定义每次读取的容量(单位字节)buf = 1024 * 100while True:content = file_obj.read(buf)if content:new_file_obj.write(content)else:break

4. seek 和 tell 方法

# 文本文件中,如果以二进制模式读取(read方法),一个英文字母以一个字节存储,一个中文一般在 utf-8 编码格式下是以三个字节存储,size 参数的单位就是字节
# 如果以文本模式读取(read方法),那么 size 参数的单位就是字符'''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())  # 3file_obj.seek(34)print('当前读取到了---》', file_obj.tell())  # 34print(content)  # b'\xe7\xa8\x8b' (显示中文)'''
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:\\''''
# 4. 当前文件夹下创建一个 123 的目录
# os.mkdir("123")# 5. 删除目录
# os.removedirs('123')# 6. 创建文件(权限一定不能设置为 r 或者 r+)
# open('cris1.txt','w')
# open('cris2.txt','x')
# open('cris3.txt','r')# 7. 删除文件
# os.remove('cris1.txt')# 8. 重命名文件(第一个参数为原文件路径,第二个参数为新文件路径,如果新旧文件处于同一目录则重命名,否则就是文件剪切移动)
os.rename('cris.txt', 'new_cris.txt')

Cris 的Python笔记(十三):异常和文件处理相关推荐

  1. python 笔记:读取mat文件

    1 mat文件介绍 mat文件是matlab的数据存储的标准格式. mat文件是标准的二进制文件,还可以ASCII码形式保存和加载,在MATLAB中打开显示类似于单行EXCEL表格. --from 百 ...

  2. Python笔记四之操作文件

    一.字符串方法补充(join.split) join方法: # join方法,连接字符串 1.把一个list变成了字符串 2.通过某个字符把list里面的元素连接起来 # 3.只要是可以循环的都可以连 ...

  3. Python笔记之读取yaml文件

    参考博文 [Python] 读写yaml文件和处理yaml分段 yaml 读取.追加.写入 例1 abc.yaml 代码: import yaml import osdef read_config() ...

  4. Python笔记: 执行run.py文件

    前言 尝试将pytest, allure的命令都写入到了run.py文件中, 在window的cmd 命令行工具, 或者 Ubuntu 的 Terminal 工具中执行. 执行方式 直接cd 到run ...

  5. Cris 的Python笔记(六):函数基础

    文章目录 1. 函数基础语法知识 2. 文档字符串(Python中的函数规范) 3. 函数的作用域和命名空间 1. 函数基础语法知识 # 函数:函数也是一个对象,用来保存可执行的代码并且在需要时随时调 ...

  6. Cris 的Python笔记(十一):面向对象三大特征之多态

    ''' Python 的多态:一个对象可以以不同的形态去呈现,实现方式相比 Java更加简单 因为动态语言的特点,Python 无法实现在代码指向前对方法参数进行检查,所以只要满足指定方法体的要求,任 ...

  7. 【python笔记】异常

    捕获异常: 转载于:https://www.cnblogs.com/ningth/archive/2012/02/03/2336542.html

  8. python怎么读取txt文件-Python笔记(读取txt文件中的数据)

    在机器学习中,常常需要读取txt文本中的数据,这里主要整理了两种读取数据的方式 数据内容 共有四列数据,前三列为特征值,最后一列为数据标签 409208.3269760.9539523 144887. ...

  9. Cris 的Python笔记(十四):脑图福利

最新文章

  1. java需要转go吗,【Java转Go】弄清GOPATH
  2. Java黑皮书课后题第6章:**6.3(回文整数)使用下面的方法头编写两个方法:……使用reverse方法实现isPalindrome。如果一个数字的逆序数和它自身相等,这个数就称为回文数。
  3. C# 系统应用之透明罩MyOpaqueLayer实现360界面阴影效果
  4. #时间预测算法_【时间序列】时序预测竞赛之异常检测算法综述
  5. 23种设计模式之状态模式
  6. ubuntu学习摘要-ubuntu root用户
  7. mysql建表指定引擎_请教mysql建表指定data directory 报错
  8. python怎样把if语句写成一行_python:将一个简单的if-then-else语句放在一行上
  9. Java中的抽象类和接口(interface),abstract关键字的用法
  10. c语言遍历字节,C语言遍历结构体
  11. python多元回归因子选取_Python中的多元回归(带因子选择)
  12. Axure 8.1.0.3381版安装包+注册码百度云盘下载
  13. ISO镜像安装WIN10到NVME固态硬盘,无法找到新加装的NVME硬盘(驱动器)
  14. meson test 的 --test-args 参数
  15. 记一次应急-插U盘之后文件夹全变成exe中毒(100%解决)
  16. 不用注册表删除搜狗输入法残留文件夹
  17. 四川大学网络教育计算机应用基础,四川大学网络教育学院《计算机应用基础》第一次作业...
  18. leetcode: 70. Climbing Stairs
  19. MQ2烟雾传感器模块——stm32f103
  20. kubernetes上的服务发现-CoreDNS配置

热门文章

  1. c++:定义函数Product计算两个浮点数数的乘积(定义函数)
  2. 走向5G:面对困难,展望未来
  3. 单细胞数据分析工具scvi介绍
  4. dnf服务器未响应怎么解决方法,科技知识:DNF地下城与勇士程序未响应怎么办——一招搞定...
  5. 美国亚马逊即将开设第二家无人便利店
  6. iPhone / iPad iOS 5.0.1完美 越狱 教程 A4/A5处理器
  7. SEM——搜索引擎营销
  8. 华为海思 hikey970 烧录固件 ubuntu桌面版
  9. 华为云早报 印度政府拟要求 Google、Facebook 等在本地存储数据
  10. 剪辑技巧,简单几步骤即可混剪出多段视频素材