Python 高级编程:文件操作与错误处理

在前几篇文章中,我们介绍了Python的基本语法、函数和模块以及面向对象编程。这些知识对于大部分日常编程问题已经足够,但对于需要分析大数据的人来说,这些还不够。本章将介绍Python的文件操作以及错误处理与调试。
image.png

目录

    • 文件操作
      • 读文件
      • 写文件
    • 错误处理与调试
      • 常见异常类型
      • 捕获异常
      • 跳过异常
      • 自定义异常

文件操作

在数据分析中,我们经常需要读取和处理外部数据。Python 提供了丰富的文件操作功能,可以方便地读取和写入文件。

读文件

使用 open() 函数可以打开文件,并通过参数 'r' 表示读取模式。

f1 = open("/Users/xiaoyangli/Desktop/hello.txt", "r")

文件打开后,可以通过多种方式读取文件内容:
image.png

# 读取整个文件内容
content = f1.read()

# 读取固定字节数的内容
content = f1.read(size)

# 读取一行内容
line = f1.readline()

# 读取所有行,并返回一个列表
lines = f1.readlines()

# 逐行读取文件内容
for line in f1.readlines():
    print(line)

记住文件打开后一定要关闭文件:

f1.close()

写文件

写文件和读文件类似,首先使用 open() 函数打开文件,并通过参数 'w' 表示写入模式。

f2 = open("/Users/xiaoyangli/Desktop/hello.txt", "w")

然后使用 write() 方法写入内容:
image.png

# 写入字符串
f2.write("Hello world!")

# 写入列表
for item in list:
    f2.write(item + "\n")

注意,使用 'w' 参数会覆盖原有内容。如果只想在文件末尾追加内容,可以使用 'a' 参数:

f2 = open("/Users/xiaoyangli/Desktop/hello.txt", "a")
f2.write("Append this line.")

同样,写文件后也要记得关闭文件:

f2.close()

错误处理与调试

在编写程序时,处理错误和调试代码是非常重要的。Python 提供了丰富的异常处理机制,使我们能够优雅地处理错误。

常见异常类型

image.png

以下是一些常见的Python异常类型:

  • NameError: 变量未定义
  • ZeroDivisionError: 除数为零
  • SyntaxError: 语法错误
  • IndexError: 索引超出范围
  • KeyError: 关键字不存在
  • IOError: 输入输出错误
  • AttributeError: 访问未定义的对象属性
  • ValueError: 数值错误
  • TypeError: 类型错误

捕获异常

Python 的错误处理机制使用 try...except...finally 结构。当 try 块中出现错误时,程序会跳到 except 块中执行。无论是否出现错误,finally 块中的代码都会执行。
image.png

try:
    f = open("hello.txt", "r")
except IOError as e:
    print("IOError:", e)
else:
    print("File opened successfully")
    f.close()
finally:
    print("Execution completed")

跳过异常

有时,我们希望捕获异常后让程序继续执行,而不是中断。
image.png

try:
    f = open("hello.txt", "r")
except IOError as e:
    print("IOError:", e)
    pass

自定义异常

异常和错误都是类。所有异常类都继承自 BaseException。我们可以定义自己的异常类,以便根据需要抛出特定异常。
image.png

class FileError(IOError):
    pass

try:
    f = open("README.txt", "r")
    if "README.txt":
        raise FileError("Don't open README")
except FileError as e:
    print(e)

通过以上内容,我们介绍了Python中的文件操作与错误处理。这些高级技巧不仅能帮助你更好地处理数据,还能提高程序的健壮性和可维护性。希望这篇文章对你有所帮助!

Happy coding!

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/747621.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

制造业采购堡垒机的四大必要性看这里!

制造业包括的行业广泛,与大家的生活息息相关,例如食品制造业、汽车制造业、纺织业、服装制造业等等。但大家对于制造业不是很了解,不知道制造业也是需要采购堡垒机的,今天我们就来聊聊制造业采购堡垒机的必要性。 制造业采购堡垒机…

node mySql 实现数据的导入导出,以及导入批量插入的sql语句

node 实现导出, 在导出excel中包含图片(附件) node 实现导出, 在导出excel中包含图片(附件)-CSDN博客https://blog.csdn.net/snows_l/article/details/139999392?spm1001.2014.3001.5502 一、效果 如图: 二、导入 …

AI商品图生成企业定制服务,广州这家公司走在了行业前头

🚀 最强AI绘图设计企业定制服务出炉 —— 触站A,智能艺术的革新者 🌟 🎨 触站AI,绘制未来的智能艺术 🎨在AI技术的浪潮中,触站AI以其前沿技术,为艺术与设计领域注入了新的活力。 &a…

【SkiaSharp绘图11】SKCanvas属性详解

文章目录 SKCanvas构造SKCanvas构造光栅 Surface构造GPU Surface构造PDF文档构造XPS文档构造SVG文档SKNoDrawCanvas 变换剪裁和状态构造函数相关属性DeviceClipBounds获取裁切边界(设备坐标系)ClipRect修改裁切区域IsClipEmpty当前裁切区域是否为空IsClipRect裁切区域是否为矩形…

C3P0数据库连接池

目录 一:连接池介绍 1.1连接池解决的问题 2.常用的数据库连接池 二:c3p0介绍 2.1C3P0介绍: 2.2C3P0快速入门 1.常用参数说明 2.API介绍 3.使用步骤 1.导入jar包c3p0-0.9.1.2.jar 2.编写c3p0-config.xml配置文件,配置对…

深入探索:大型语言模型消除幻觉的解决之道

随着人工智能技术的飞速发展,大型语言模型(LLMs)已经成为自然语言处理领域的明星。它们以其庞大的知识库和生成连贯、上下文相关文本的能力,极大地推动了研究、工业和社会的进步。然而,这些模型在生成文本时可能会产生…

27. 高级特性(下)

目录 一、为了类型安全和抽象而使用 newtype 模式二、使用类型别名创建类型同义词2.1 使用type关键赋予现有类型一个别名2.2 减少重复2.3 与Result<T, E>结合使用2.4 从不返回的 never type 三、高级函数和闭包3.1 函数指针3.2 返回闭包 四、宏4.1 宏和函数的区别4.2 mac…

2024 最新推广服务 API 推荐,助力业务腾飞

在数字化营销的浪潮中&#xff0c;API 服务正以其强大的功能和高效的特性&#xff0c;成为企业和开发者们实现精准推广、优化营销效果的得力助手。2024 年的今天&#xff0c;各种创新的 API 服务层出不穷&#xff0c;为广告投放、数据洞察等领域带来了前所未有的机遇。在接下来…

echarts隔行背景色

看了下使用说明&#xff0c;试了半天终于搞对了 参考文档&#xff1a;Documentation - Apache ECharts option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [120, 200, 150, 80, 70, 110, 130],type: bar,mar…

视频共享融合赋能平台LntonCVS视频监控业务平台建设安全煤矿矿井应用方案

随着我国经济的飞速增长&#xff0c;煤炭作为主要的能源之一&#xff0c;在我国的能源结构中扮演着至关重要的角色。然而&#xff0c;煤矿事故的频繁发生&#xff0c;不仅造成了巨大的人员伤亡和财产损失&#xff0c;也对社会产生了深远的负面影响。因此&#xff0c;实现煤矿的…

多家国产大模型提供OpenAI API服务替代方案,谷歌将推出明星网红AI聊天机器人

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 1、OpenAI终止对中国提供服务 6月25日凌晨&#xff0c;多个用户收到OpenAI的推送邮件&#xff0c;信中称&#xff0c;自今年7月9日起&#xff0c;将开始阻止来自非支持国家和地区的API&#xff08;应…

华为od-C卷200分题目3 - 两个字符串间的最短路径问题

华为od-C卷200分题目3 - 两个字符串间的最短路径问题 题目描述 给定两个字符串&#xff0c;分别为字符串A与字符串B。 例如A字符串为ABCABBA&#xff0c;B字符串为CBABAC可以得到下图m*n的二维数组&#xff0c;定义原点为(0, 0)&#xff0c;终点为(m, n)&#xff0c;水平与垂…

python自动化系列:自动将工作簿下的所有工作表合并到新工作表

作品介绍 作品名称&#xff1a;自动将工作簿下的所有工作表合并到新工作表 开发环境&#xff1a;PyCharm 2023.3.4 python3.7 用到的库&#xff1a;os、xlwings 作品简介&#xff1a;该实例使用xlwings库来操作Excel文件&#xff0c;其主要功能是将一个工作簿中所有工作表…

玩机进阶教程----MTK芯片使用Maui META修复基带 改写参数详细教程步骤解析

目前mtk芯片与高通芯片在主流机型 上使用比较普遍。但有时候版本更新或者误檫除分区等等原因会导致手机基带和串码丢失的故障。mtk芯片区别与高通。在早期mtk芯片中可以使用工具SN_Writer_Tool读写参数。但一些新版本机型兼容性不太好。今天使用另外一款工具来演示mtk芯片改写参…

打破数据分析壁垒:SPSS复习必备(十)

Means过程 统计学上的定义和计算公式 定义&#xff1a;Means过程是SPSS计算各种基本描述统计量的过程&#xff0c;其实就是按照用户指定条件&#xff0c;对样本进行分组计算均数和标准差&#xff0c;如按性别计算各组的均数和标准差。 用户可以指定一个或多个变量作为分组变…

上古世纪台服注册账号+下载客户端全方位图文教程

又一款新的MMRPG游戏即将上线啦&#xff0c;游戏名称叫做《上古世纪》游戏采用传统MMO类型游戏的玩法&#xff0c;但是开发商采用了先进的游戏引擎&#xff0c;让玩家们可以享受到极致的视觉体验。同时游戏的背景是建立在大陆分崩离析的基础上。各个部落因为领地的原因纷纷开战…

【大数据】—量化交易实战案例双均线策略(移动平均线)

声明&#xff1a;股市有风险&#xff0c;投资需谨慎&#xff01;本人没有系统学过金融知识&#xff0c;对股票有敬畏之心没有踏入其大门&#xff0c;今天用另外一种方法模拟炒股&#xff0c;后面的模拟的实战全部用同样的数据&#xff0c;最后比较哪种方法赚的钱多。 量化交易…

解决问题:浏览器中使用必应时提示“cn.bing.com将您的重定向的次数过多“

目录 一、问题分析二、关闭代理三、更新配置文件 一、问题分析 专业问题分析见其它博主的博文&#xff1a;重定向次数过多。 看了其它博文有一定启发&#xff0c;我自己尝试后发现两种解决办法。 二、关闭代理 我自己用的梯子是Clash&#xff0c;参考其他博主的分析&#x…

亚马逊运营专词(二)

1. A页面&#xff1a;亚马逊A页面即图文版商品详情页面&#xff0c;可以通过A页面使用不同的方式来描述商品特征&#xff0c;例如在页面中添加品牌故事、产品图片、产品文字介绍等&#xff0c;进一步完善页面。但目前A页面只对在亚马逊上注册了品牌的商家开放。 2. 跟卖&#x…

【PWN · TcachebinAttack | UAF】[2024CISCN · 华中赛区] note

一道简单的tcache劫持 一、题目 二、思路 存在UAF&#xff0c;libc版本2.31&#xff0c;经典菜单题 1.通过unsorted-bin-attack来leak-libc 2.通过uaf打tcache-bin-attack劫持__free_hook实现getshell 三、EXP from pwn import * context(archamd64,log_leveldebug)ioproce…