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

Python学习(1) ----- Python的文件读取和写入

这篇文章主要用于备忘录,记录一下Python中的文件读取和写入,以及用到的相对路径和绝对路径。

一、文件的读取

在 Python 中,读取文件有几种常用方式,适合不同的应用场景。以下是最常见的读取方式以及对应的代码实例:


📄 假设我们有一个文件 example.txt,内容如下:

Hello world
This is a sample file.
Python is great!

✅ 1. 逐行读取:使用 for line in file

with open("example.txt", "r", encoding="utf-8") as f:for line in f:print(line.strip())  # strip 去除换行符
  • 适用场景:处理大文件时,节省内存。
  • 每次读一行,效率高。

✅ 2. 读取全部内容read()

with open("example.txt", "r", encoding="utf-8") as f:content = f.read()print(content)
  • 适用场景:需要一次性获取整个文件内容。
  • 注意:大文件时内存占用高。

✅ 3. 读取所有行到列表readlines()

with open("example.txt", "r", encoding="utf-8") as f:lines = f.readlines()for line in lines:print(line.strip())
  • 返回值:每一行是列表中的一个元素(含换行符)。
  • 适用场景:需要索引具体某几行。

✅ 4. 读取固定长度的字符read(n)

with open("example.txt", "r", encoding="utf-8") as f:first_10 = f.read(10)print(first_10)
  • 读取前 10 个字符
  • 适合:处理二进制数据或大文件的分段读取。

🧠 小贴士:

  • "r":只读(默认)。
  • "rb":以二进制模式读。
  • "r+":读写。
  • 一般推荐加上 encoding="utf-8" 来避免编码问题。
  • 使用 with open(...) as f: 可以自动关闭文件,防止资源泄露。

二、文件的写入

在 Python 中,文件写入是通过 open() 函数与写入模式(如 "w""a""w+" 等)配合使用的。以下是常用写入方式的详细介绍和示例。


📌 常见写入模式

模式含义是否会覆盖原文件文件不存在时
"w"写入(write)✅ 是,会清空文件✅ 创建新文件
"a"追加(append)❌ 否,追加到末尾✅ 创建新文件
"w+"写入 + 读取✅ 是✅ 创建新文件
"a+"追加 + 读取❌ 否✅ 创建新文件

✅ 1. 写入内容到文件(覆盖原内容)

with open("output.txt", "w", encoding="utf-8") as f:f.write("Hello, world!\n")f.write("Python is awesome.\n")
  • 每次运行都会清空原文件并重新写入
  • 没有文件会创建文件

✅ 2. 追加内容到文件末尾

with open("output.txt", "a", encoding="utf-8") as f:f.write("New line added.\n")
  • 保留原内容,把新内容追加在末尾

✅ 3. 写入多行内容

lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
with open("output.txt", "w", encoding="utf-8") as f:f.writelines(lines)  # 注意:每行必须带 \n

✅ 4. 写入并读取(w+

with open("output.txt", "w+", encoding="utf-8") as f:f.write("Write and read.\n")f.seek(0)  # 回到文件开头print(f.read())

🧠 小贴士:

  • 使用 with open(...) 会自动关闭文件,防止资源泄露。
  • 写入内容后,记得加换行符 \n,否则内容会连在一起。
  • 若文件路径不存在,可先用 os.makedirs() 创建目录。
  • 不带+读取会报错:“io.UnsupportedOperation: not readable”

三、相对路径和绝对路径

相对路径 是相对于当前运行脚本的位置,或者你设置的“工作目录”。

project/
├── main.py
└── data/
└── input.txt

绝对路径是从磁盘根目录开始的完整路径,和当前目录无关。

更可靠,但不推荐硬编码,否则跨平台和移植不方便。

你可以通过以下方法来判断一个路径是相对路径还是绝对路径


✅ 1. 使用 os.path.isabs() 判断

import osprint(os.path.isabs("/Users/alice/file.txt"))     # True(绝对路径)
print(os.path.isabs("data/input.txt"))             # False(相对路径)

✅ 2. 使用 pathlib.Path().is_absolute()

from pathlib import Pathprint(Path("/home/user/data.txt").is_absolute())  # True
print(Path("docs/readme.md").is_absolute())       # False

🧠 判断逻辑(你也可以自己看出来):

📌 绝对路径的特点:

  • Unix/Linux/macOS:以 / 开头 → /home/user/data.txt
  • Windows:以 盘符:\ 开头 → C:\Users\name\file.txtD:/data/test.txt

📌 相对路径的特点:

  • 不以 /(Unix)或 盘符:(Windows)开头
  • 相对于当前工作目录os.getcwd()

✅ 示例对比

路径类型说明
/usr/local/bin绝对路径Unix 系统绝对路径
C:\Windows\Fonts绝对路径Windows 下的绝对路径
data/input.txt相对路径相对于当前运行目录
./data/input.txt相对路径当前目录下的相对路径
../output.txt相对路径上一级目录下的文件

✅ 获取绝对路径(从相对路径)

import osrel_path = "data/input.txt"
abs_path = os.path.abspath(rel_path)
print(abs_path)

或者用 pathlib

from pathlib import Pathrel_path = Path("data/input.txt")
print(rel_path.resolve())

http://www.xdnf.cn/news/9327.html

相关文章:

  • 芝麻糊SSVIP2.0.5.7 | 自动收取能量 小游戏任务
  • CSS 中的transform详解
  • OptiStruct结构分析与工程应用:NVH外声场分析
  • AStar低代码平台-脚本调用C#方法
  • 【MySQL】2-MySQL索引P2-执行计划
  • 2025蓝桥杯WP
  • C++学习-入门到精通【9】面向对象编程:继承
  • 青少年编程与数学 02-020 C#程序设计基础 06课题、运算符和表达式
  • 内容中台的AI驱动是什么?
  • Linux--CentOs 8配置及基础命令
  • atomic.Value与sync.map有什么区?
  • 建筑兔零基础Arduino自学记录100|简易折纸机器人-17
  • C语言中清空缓存区到底写到哪里比较好
  • 2025-05-27 Python深度学习7——损失函数和反向传播
  • 电子电路:充电宝的工作原理
  • ActiveMQ
  • UPS的工作原理和UPS系统中旁路的作用
  • Python
  • sockfd = lwip_socket,newfd = lwip_accept 有什么区别
  • Milvus索引操作和最佳实践避坑指南
  • 2025-05-27 Python深度学习6——神经网络模型
  • 【递归、搜索与回溯算法】专题一 递归
  • 从大模型加载到交互:3D Web轻量化引擎HOOPS Communicator如何打造流畅3D体验?
  • 【AUTOSAR】时间保护(Timing Protection)概念、应用与实现源代码解析(下篇)
  • Docker 挂载卷并保存为容器
  • oracle在线迁移数据文件
  • 【平面波导外腔激光器专题系列】用于光纤传感的低噪声PLC外腔窄线宽激光器
  • 【R语言编程绘图-箱线图】
  • 什么是项目突围管理,如何培养相关能力
  • c++复习(类型准换+动态数组+类与对象)