当前位置: 首页 > 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.xdnf.cn/news/483193.html

相关文章:

  • Spring框架(三)
  • 7.重建大师点云处理教程
  • 每周靶点:PCSK9、Siglec15及文献分享
  • python基础语法(三-中)
  • [Java][Leetcode middle] 238. 除自身以外数组的乘积
  • 学习alpha
  • 【基础】Windows开发设置入门4:Windows、Python、Linux和Node.js包管理器的作用和区别(AI整理)
  • go.mod关于go版本异常的处理
  • 数据治理域——数据同步设计
  • HTML 中的 input 标签详解
  • 芯片测试之X-ray测试
  • 算法练习:19.JZ29 顺时针打印矩阵
  • SpringAI-RC1正式发布:移除千帆大模型!
  • handsome主题美化及优化:10.1.0最新版 - 2
  • [Unity]AstarPathfindingProject动态烘焙场景
  • 电脑出故障驱动装不上?试试驱动人生的远程服务支持
  • Vue3项目,子组件默认加载了两次,使用 defineAsyncComponent 引入组件后只加载一次
  • 简单入门RabbitMQ
  • Centos7 中 Docker运行配置Apache
  • 基于Scrapy-Redis的分布式景点数据爬取与热力图生成
  • skywalking使用教程
  • LLaMA-Factory:环境准备
  • 大语言模型核心技术解析:从训练到部署的全链路实践
  • Python web 开发 Flask HTTP 服务
  • leetcode 2901. 最长相邻不相等子序列 II 中等
  • 测试工程师如何学会Kubernetes(k8s)容器知识
  • 05-SpringBoot
  • 链表的中间结点数据结构oj题(力扣876)
  • BM25 算法与关键词提取在向量数据库中的实践优化
  • tomcat一闪而过,按任意键继续以及控制台中文乱码问题