第十章 读取文件

pathlib模块中有现成的Path类

10.1 读取文件

10.1.1 读取文件的全部内容 path.read_text()

红色或者黄色方法(直接用相对路径不好用所以红色要添加os方式)

复制代码
import os
from pathlib import Path

# 获取当前脚本所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 将当前工作目录切换到脚本所在目录
os.chdir(script_dir)
path=Path('pi_digits11111.txt')
# path = Path(r'D:\谷歌浏览器下载\源代码文件\chapter_10\partial_programs\reading_from_a_file\pi_digits11111.txt')
contents = path.read_text()
contents =contents.rstrip()
print(contents)

看到结果有一行空白。

10.1.2删除多余空行,对字符串变量contents调用rstrip()

10.1.3 访问文件中的各行

lines = contents.splitlines() 将冗长的字符串转换成一系列行,再使用for循环以每次一行的方式检查文件中的各行:

10.1.4使用文件中的内容

删除左空格 .lstrip()

10.1.5 包含百位的大型文件

如果一个文件包含精确到小数点后1000000位而不是30位的圆周率值,也可以创建一个包含所有这些数字的字符串。在这里只打印后五十位 以免终端花太多时间显示全部数字。

10.1.6 圆周率里有你的生日吗? 结合input输入

10.2 写入文件

保存数据的最简单方式之一就是将其写入文件,即使关闭包含程序输出的终端窗口,这些输出也依然存在:既可以在程序结束运行后查看这些输出,也可以与他人共享输出文件,还可以编写程序来将这些输出读取到内存中并进行处理。

10.2.1 写入一行

默认到这里了

10.2.2 写入多行

10.3 异常 代码中应该是先写这些。

使用try-except 代码块

10.3.5 万一文件找不到 写try except语句

10.3.6 分析文本

spilt方法

10.3.7 使用多个文件

10.3.8 静默

如果不想有 没找到文件 的提示 可以使用pass

10.4 存储数据

关闭程序后,仍然保存用户输入的信息,使用模块json来存储数据。

  • json模块将python数据结果转换成JSON 格式的字符串,并在程序再次运行时候从文件中加载数据。
  • 还可以使用json在Python之间共享数据。
  • JSON数据格式并不是python专用的,可以跟其他编程语言共享。
  • 轻量级数据格式。

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

1.要写入的列表

2.实例对象 文件

3.列表 使用json。dumps转换成json格式

4.实例对象调用方法写入内容 到文件

复制代码
import json

# 定义一个 Python 字典
python_dict = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

# 使用 json.dumps() 将 Python 字典转换为 JSON 字符串
json_string = json.dumps(python_dict, indent=4)
print("JSON 字符串:")
print(json_string)

# 使用 json.loads() 将 JSON 字符串转换回 Python 对象
parsed_dict = json.loads(json_string)
print("\n解析后的 Python 对象:")
print(parsed_dict)

代码解释

  • 首先定义了一个 Python 字典 python_dict
  • 然后使用 json.dumps() 方法将该字典转换为 JSON 字符串 json_string,并通过 indent=4 参数使输出的 JSON 字符串具有 4 个空格的缩进,提高可读性。
  • 最后使用 json.loads() 方法将 JSON 字符串解析回 Python 字典 parsed_dict

10.4.2 保存和读取用户生成的数据

10.4.3 重构

所谓重构就是重新塑型

本来一个函数方法能同时做3个方面的问题

最好给他分开成三个 清清楚楚的函数方法。这个过程就是重构。

相关推荐
檀越剑指大厂几秒前
【Python系列】使用 memory_profiler 诊断 Flask 应用内存问题
开发语言·python·flask
笠码3 分钟前
JVM Java虚拟机
java·开发语言·jvm·垃圾回收
WXX_s13 分钟前
【OpenCV篇】OpenCV——03day.图像预处理(2)
人工智能·python·opencv·学习·计算机视觉
橙小花18 分钟前
C语言:指针、变量指针与指针变量、数组指针与指针数组
c语言·开发语言
Cyanto36 分钟前
MyBatis-Plus高效开发实战
java·开发语言·数据库
艾莉丝努力练剑1 小时前
【LeetCode&数据结构】二叉树的应用(二)——二叉树的前序遍历问题、二叉树的中序遍历问题、二叉树的后序遍历问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
Jackilina_Stone1 小时前
【论文|复现】YOLOFuse:面向多模态目标检测的双流融合框架
人工智能·python·目标检测·计算机视觉·融合
wjs20242 小时前
XML 语法详解
开发语言
双叶8362 小时前
(Python)文件储存的认识,文件路径(文件储存基础教程)(Windows系统文件路径)(基础教程)
开发语言·windows·python
喜欢吃燃面2 小时前
C++:list(1)list的使用
开发语言·c++·学习