当前位置: 首页 > news >正文

Python笔记 -- 文件和异常

文章目录

    • 1、文件
      • 1.1、with关键字
      • 1.2、逐行读取
      • 1.3、写入模式
      • 1.4、多行写入
    • 2、异常
      • 2.1、try-except-else
      • 2.2、pass

1、文件

1.1、with关键字

with关键字用于自动管理资源
使用with可以让python在合适的时候释放资源
python会将文本解读为字符串

# -*- encoding:utf-8 -*-
# 如果中文运行不了加上上面那个注释# 使用with后不需要调用close去关闭文件
# ./表示在当前目录
# 使用.\\也表示当前目录,第一个\表示转义
# with open('./text.txt') as file_obj:
# with open('.\\text.txt') as file_obj:
with open('text.txt') as file_obj:print(file_obj)msg = file_obj.read()
print(msg)

在这里插入图片描述

在这里插入图片描述

1.2、逐行读取

无论哪种方式都会改变 file_obj
所以后面那个什么也没读到

with open('text.txt') as file_obj:# 方式1lines = file_obj.readlines()print(lines)# 方式2for line in file_obj:# strip()用于去除空行print(line.strip())

在这里插入图片描述

1.3、写入模式

python只会将字符串写入文件中
若要写入数字,需将数字转化成字符串

def print_file(filename):with open(filename, 'r') as file_r:for info in file_r:print(info)def write_file(filename, mode, text):with open(filename, mode) as file_w:file_w.write(text)file_name = 'text.txt'
write_file(file_name, 'w', 'abcdef')
print_file(file_name)
write_file(file_name, 'w', '123')
print_file(file_name)

open的第二个实参mode:
在这里插入图片描述

  • r 只读
  • w 只写
    文件不存在:创建新文件
    文件存在:删除文件原有内容,再写入
    可以理解为就是创建一个新文件
    在这里插入图片描述
  • a 只写
    以追加的方式写入到末尾

在这里插入图片描述

  • r+ 可读可写
    在这里插入图片描述
    其他的就不一一赘述了

1.4、多行写入

filename = 'text.txt'
with open(filename, 'w') as file_w:file_w.write(str(123))file_w.write(str(456) + '\n')file_w.write(str(789))with open(filename, 'r') as file_r:for info in file_r:print(info, end='')

在这里插入图片描述

2、异常

产生异常后,python会创建一个异常对象,如果编写了处理该异常的代码,程序将继续运行

2.1、try-except-else

当将0作为除数时,会产生以下错误
在这里插入图片描述

用try-except包裹后:

try:ret = 9 / 0
except ZeroDivisionError:print("0不能作为除数")
else:print(ret)

在这里插入图片描述
如果try中的内容运行没问题,python将会跳过except,执行else中的代码,并继续运行后面的内容,否则寻找对应的except并运行其中的代码,然后再执行后面的内容。一个try可对应多个except

2.2、pass

当捕获到异常但不想处理时,可用pass

try:ret = 9 / 0
except ZeroDivisionError:pass
else:print(ret)

在这里插入图片描述

笔记来源:《Python编程 从入门到实践》

http://www.lryc.cn/news/40120.html

相关文章:

  • 蓝桥杯刷题冲刺 | 倒计时24天
  • 真正理解微软Windows程序运行机制——什么是消息
  • HTTP 缓存的工作原理
  • RK3568在Android上进行驱动模块开发(源码外)
  • 操作技巧 | 在Revit中借用CAD填充图案的方法
  • Java的二叉树、红黑树、B+树
  • 昨天某读者拿到华为OD岗位offer,今天来分享一下经验,包含华为OD机试
  • 树的遍历方式(前中后,层序遍历,递归,迭代,Morris遍历)-----直接查询代码
  • Docker Registry部署镜像私有仓库及鉴权认证
  • stm32外设-中断详解
  • 第十四届蓝桥杯三月真题刷题训练——第 13 天
  • webgl_gpgpu_birds 样例分析
  • 以业务行为驱动的反入侵安全能力建设
  • Unity3d C#使用DOTween插件的Sequence实现系列动画OnComplete无效和颜色设置无效的问题记录
  • 【蓝桥杯-筑基篇】排序算法
  • 编辑器进化 VSCode + Vim
  • LearnOpenGL-高级OpenGL-6.天空盒
  • Printk打印内核日志
  • 界面控件DevExpress WPF 202计划发布的新功能合集
  • Spring Cloud Alibaba 微服务2,注册中心演变 + Nacos注册中心与配置中心
  • Navicat 图形化界面工具
  • 2023年网络安全比赛--attack(新)数据包分析中职组(超详细)
  • C语言之extern(七十)
  • 树的前中后序的Morris遍历
  • 到底什么是线程?线程与进程有哪些区别?
  • 你真的知道如何系统高效地学习数据结构与算法吗?
  • Linux操作系统基础的常用命令
  • Jasypt加密库基本使用方法
  • C++并发编程之五 高级线程管理
  • 单片机——IIC协议与24C02