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

Python如何读写文件?

1. 文件读取

(1)使用open()函数打开文件
基本语法是file_object = open(file_name, mode),其中file_name是要打开的文件的名称(包括路径,如果文件不在当前目录下),mode是打开文件的模式。例如,

f = open('example.txt', 'r')

这里r表示以只读模式打开文件。
常见的打开模式还有w(写入模式,如果文件存在则清空内容后写入,文件不存在则创建新文件)、a(追加模式,在文件末尾添加内容,文件不存在则创建新文件)、x(独占创建模式,创建新文件,如果文件已存在则抛出异常)、b(二进制模式,用于读取或写入二进制文件,如图片、音频等,通常与r、w、a等模式结合使用,如rb、wb)和t(文本模式,默认模式,用于读取或写入文本文件)。
(2)读取文件内容的方法
read () 方法:读取整个文件的内容并返回一个字符串。例如,

content = f.read()

这样content就包含了文件example.txt中的所有文本内容。不过,如果文件很大,使用这种方法可能会占用大量内存。
readline () 方法:每次读取文件的一行内容。例如,line1 = f.readline()会读取文件的第一行,再次调用readline()会读取第二行,以此类推。这对于逐行处理文件内容很有用,比如读取日志文件。
readlines () 方法:读取文件的所有行,并返回一个包含每行内容的列表。例如,

lines = f.readlines()

列表lines中的每个元素就是文件中的一行内容。
(3)关闭文件
在读取完文件后,应该关闭文件,以释放系统资源。可以使用file_object.close()方法来关闭文件,如f.close()。为了确保文件总是能够正确关闭,也可以使用try - finally语句块或者with语句。例如,使用with语句:

with open('example.txt', 'r') as f:content = f.read()# 在这里对content进行处理,无需手动关闭文件

在with语句块结束时,文件会自动关闭。

2. 文件写入

(1)使用open()函数打开文件
和读取文件类似,不过打开模式要选择写入相关的模式,如w或a。例如,

f = open('output.txt', 'w')

这是以写入模式打开output.txt文件。
(2)写入文件内容的方法
write () 方法:用于将一个字符串写入文件。例如,f.write(“这是要写入文件的内容”),会将指定的字符串写入到打开的文件中。如果文件是以w模式打开的,之前的内容会被清空;如果是以a模式打开的,则会在文件末尾添加内容。
writelines () 方法:用于将一个字符串序列(如列表)写入文件。例如,

lines = ["第一行","第二行","第三行"]
f.writelines(lines)

会将列表中的每一行内容依次写入文件。需要注意的是,这个方法不会自动添加换行符,所以如果需要每行单独成一行,列表中的字符串应该已经包含换行符,或者在写入时手动添加换行符,如

f.writelines([line + "\n" for line in lines])

(3)关闭文件
同样,在写入完成后要关闭文件,可以使用f.close()或者with语句来确保文件关闭。例如:

with open('output.txt', 'a') as f:f.write("这是追加的内容\n")

3. 文件操作的注意事项

(1)编码问题
在处理文本文件时,需要注意文件的编码方式。默认情况下,open()函数使用系统默认编码(通常是 UTF - 8)。如果文件是其他编码方式,如 GBK,可以通过encoding参数指定编码,如

f = open('example.txt', 'r', encoding='GBK')

(2)文件路径问题
如果文件不在当前目录下,需要提供正确的文件路径。路径可以是绝对路径(从根目录开始的完整路径),也可以是相对路径(相对于当前目录的路径)。例如,…/data/file.txt是一个相对路径,表示当前目录的上级目录中的data文件夹下的file.txt文件。
(3)文件权限问题
在写入文件时,需要确保程序有写入文件所在目录的权限。如果没有权限,可能会导致写入失败并抛出异常。

http://www.lryc.cn/news/475884.html

相关文章:

  • 100种算法【Python版】第38篇——Boyer-Moore算法
  • 贪心算法---java---黑马
  • 程序员的减压秘籍:高效与健康的平衡艺术
  • 2024 年 QEMU 峰会纪要
  • C++/list
  • 刘艳兵-DBA015-对于属于默认undo撤销表空间的数据文件的丢失,哪条语句是正确的?
  • 树莓派基本设置--10.使用MIPI摄像头
  • 【ARCGIS实验】地形特征线的提取
  • HTML 基础标签——表格标签<table>
  • 线程函数和线程启动的几种不同形式
  • 数组排序简介-基数排序(Radix Sort)
  • 进程间通信(命名管道 共享内存)
  • Python 网络爬虫教程:从入门到高级的全面指南
  • 深度学习:正则化(Regularization)详细解释
  • Freertos学习日志(1)-基础知识
  • CentOS9 Stream 支持输入中文
  • 基于向量检索的RAG大模型
  • 【力扣 + 牛客 | SQL题 | 每日5题】牛客SQL热题216,217,223
  • Unity humanoid 模型头发动画失效问题
  • 最全Kafka知识宝典之Kafka的基本使用
  • 机器学习中的数据可视化:常用库、单变量图与多变量图绘制方法
  • CodeQL学习笔记(3)-QL语法(模块、变量、表达式、公式和注解)
  • 代码随想录训练营Day11 | 226.翻转二叉树 - 101. 对称二叉树 - 104.二叉树的最大深度 - 111.二叉树的最小深度
  • “死鱼眼”,不存在的,一个提词小技巧,拯救的眼神——将内容说给用户,而非读给用户!
  • 深度学习在复杂系统中的应用
  • vue3图片懒加载
  • 总结一些高级的SQL技巧
  • 无人机飞手考证热,装调检修技术详解
  • AI资讯快报(2024.10.27-11.01)
  • 范式的简单理解