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

【python编程从入门到到实践】第十章 文件和异常

一、读取文件

pi_digits.txt3.141592653589793238462643383279

1.读取文件的全部内容

# file_reader.pyfrom pathlib import Pathpath = Path("pi_digits.txt")
contents = path.read_text()
print(contents)

在这里插入图片描述

2.相对文件路径和绝对文件路径

  • 当相对路径行不通时,可以使用绝对路径

3.访问文件中的各行

# file_reader.pyfrom pathlib import Pathpath = Path("pi_digits.txt")
contents = path.read_text()lines = contents.splitlines() ##
for line in lines:print(line)

4.使用文件的内容

  • 注意⚠️:在读取文本文件时,所有的文本都将解释为字符串。如果需要其作为数值使用,则需要用int()转,或float()转。
# file_reader.pyfrom pathlib import Pathpath = Path("pi_digits.txt")
contents = path.read_text()lines = contents.splitlines()
pi_string = ''
for line in lines:pi_string += lineprint(pi_string)
print(len(pi_string))

将每行左端的空格也加入了字符串
此时,将每行左端的空格也加入了字符串。如果要去除,如下

# file_reader.pyfrom pathlib import Pathpath = Path("pi_digits.txt")
contents = path.read_text()lines = contents.splitlines()
pi_string = ''
for line in lines:pi_string += line.lstrip() # 使用lstrip函数去除左端的空格print(pi_string)
print(len(pi_string))

在这里插入图片描述

5.包含 100 万位的大型文件

# file_reader.pyfrom pathlib import Pathpath = Path("pi_million_digits.txt") # π小数点后一百万位的txt
contents = path.read_text()lines = contents.splitlines()
pi_string = ''
for line in lines:pi_string += line.lstrip()print(f"{pi_string[:50]}...")
print(len(pi_string))

在这里插入图片描述

6.圆周率中包含你的生日吗

from pathlib import Pathpath = Path("pi_million_digits.txt")
contents = path.read_text()lines = contents.splitlines()
pi_string = ''
for line in lines:pi_string += line.lstrip()birthday = input('Enter your birthday, in the form mmddyy: ')
if birthday in pi_string:print('Yes')
else:print('No')

在这里插入图片描述

二、写入文件

  • 使用write_text()`写入文件时,要确保文件没有创建,或者创建了但是没有内容,如果有内容,将会直接改写文件的内容。

1.写入一行

# write_message.pyfrom pathlib import Pathpath = Path('programming.txt')
path.write_text('I love programming.')

运行后创建内容为 I love programming. programming.txt的文件。

  • 只能将字符串写入文本文件,如果要写入数值,需要转为字符串。

2.写入多行

from pathlib import Pathcontents = 'I love programming.'
contents += '\nI also like creating a game.' #path = Path('programming.txt')
path.write_text(contents)

运行后创建内容为
I love programming.
I also like creating a game.
programming.txt的文件。

三、异常

1.处理 ZeroDivisionError 异常

print(5/0)

在这里插入图片描述

2.使用 try-except 代码块 ⭐️

  • except 会顺序依次检测,如果将所有错误检测完,则后续的except 将不会再执行。
try:print(5/0)
except ZeroDivisionError:print('You cant divide by zero.') # 产生除零错误时运行
except:print('发生了未知错误')            # 产生其他错误时运行
else:print('')						 # 没有错误时运行
finallyprint('')						 # 无论如何都会运行

在这里插入图片描述

3.使用异常避免崩溃

while True:first_number = input('first number: ')second_number = input('second number: ')try:answer = int(first_number) / int(second_number)except:print('You cant divide by zero.')else:print(answer)

在这里插入图片描述

四、存储数据(后续需要再补充)

1.使用 json.dumps() 和 json.loads()

http://www.dtcms.com/a/195536.html

相关文章:

  • 遥感图像非法采矿矿区识别分割数据集labelme格式1818张3类别
  • 人脸表情识别检测数据集VOC+YOLO格式9400张8类别
  • linux环境下 安装svn并且创建svn版本库详细教程
  • python中元组的操作
  • 149.WEB渗透测试-MySQL基础(四)
  • 三轴云台之智能分析与识别技术篇
  • 蒟蒻编程日志
  • 腾讯云代码助手CodeBuddy使用体验
  • 第八章 模板项目生成
  • Matrix-Game:键鼠实时控制、实时生成的游戏生成模型(论文代码详细解读)
  • SPL做量化---MTM(动量指数)
  • Linux!启动~
  • 大模型对比
  • Grafana分布统计:Heatmap面板
  • 计算机视觉----感兴趣区域(ROI)、非极大值抑制
  • 探究电阻分压的带负载能力
  • DeepEval:快速搭建 LLM 评估框架实战「喂饭教程」
  • 机器学习数据预处理回归预测中标准化和归一化
  • C语言单链表应用详解
  • 【程序员AI入门:模型】19.开源模型工程化全攻略:从选型部署到高效集成,LangChain与One-API双剑合璧
  • 【目标检测】RT-DETR
  • PT2031K单触控单输出触摸IC
  • 【数据结构】线性表--栈
  • 网络攻防模拟:城市安全 “数字预演”
  • 记录一个为打印高清而做投喂图像增强的例子
  • leetcode2749. 得到整数零需要执行的最少操作数-medium
  • 第二十六天打卡
  • python版本管理工具-pyenv轻松切换多个Python版本
  • 求职困境:开发、AI、运维、自动化
  • Java Set系列集合详解:HashSet、LinkedHashSet、TreeSet底层原理与使用场景