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.xdnf.cn/news/8766.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

深入计算机语言之C++:模板初阶

🔑🔑博客主页:阿客不是客 🍓🍓系列专栏:从C语言到C语言的渐深学习 欢迎来到泊舟小课堂 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 一、泛型编程 1.1 引入 C 语言中实现两数交换&a…

O-RAN前传Spilt Option 7-2x

Spilt Option 7-2x 下行比特处理上行比特处理相关文章: Open Fronthaul wrt ORAN 联盟被称为下层拆分(LLS),其目标是提高电信市场的灵活性和竞争力。下层拆分是指无线电单元(RU) 和分布式单元(DU) 之间的拆分。 O-RAN前传接口可以在 eCPRI 上传输。eCPR…

硬件---2电阻---精度、阻值识别、电阻功率、电阻限流、电阻分流、电阻分压

一电阻的阻值识别 1电阻精度问题 电阻精度是指实际电阻值与标称值之间的允许偏差&#xff0c;用于表示电阻的制造误差范围。简单来说&#xff0c;精度越高&#xff0c;实际电阻值越接近标称值。 <1>理解电阻精度 标称值是电阻器上标注的理想数值&#xff0c;比如100Ω。…

软件测试学习笔记丨Vue常用指令-条件渲染(v-if)

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/23462 v-if 条件渲染 用于返回表达式为true的值渲染多个标签可以使用<template> <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&…

Linux基础(十一)——内存交换空间swap

内存交换空间swap 1.swap的作用2.使用实体分区创建swap3.使用文件创建swap 1.swap的作用 如果突然间某支程序用掉你大部分的内存&#xff0c; 那你的系统恐怕有损毁的情况发生喔&#xff01; 所以&#xff0c; 早期在安装 Linux 之前&#xff0c; 大家常常会告诉你&#xff1a…

注册登录学生管理系统小项目

头文件 #ifndef _LOGINLINK_H_ #define _LOGINLINK_H_ #include<myhead.h> typedef struct {int id;char name[20];int age; }stu,*Pstu; typedef struct node {union{int len;stu data;};struct node *next; }node,*Pnode; int regist(); int login(); Pnode create()…

atoi函数学习

文章目录 一、atoi函数1、函数原型2、函数功能3、函数返回 二、atoi使用三、atoi函数模拟实现 一、atoi函数 1、函数原型 atoi函数参数为一个字符指针&#xff0c;返回类型是int&#xff0c;作用将字符串转换为整型。使用函数需要包含头文件stdlib.h 2、函数功能 解析c字符串…

前端学习-盒子模型(十八)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 盒子模型组成 边框 语法 边框简写 代码示例 表格的细线边框 语法 内边距 内边距复合写法 外边距 外边距典型应用 外边距合并 清除内外边距 总结 前…

红队-linux基础

声明 通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一.openssl 1、openssl passwd -1 123 openssl是一个开源的…

ThingsBoard规则链节点:Save Attributes 节点详解

引言 1. Save Attributes 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 设备状态管理 3.2 数据统计 3.3 业务逻辑处理 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台&#xff0c;提供了…

光缆车间三维可视化系统

通过图扑可视化平台整合实时生产数据与流程监控&#xff0c;并呈现光缆制造流程&#xff0c;提升生产透明度与效率。支持异常检测、资源管理与智能决策&#xff0c;助力车间运营的智能化与自动化升级。

强化学习这么做绝绝子!最新idea登顶Science!

强化学习&#xff08;RL&#xff09;全新里程碑&#xff01;RL之父Richard Stutton团队&#xff0c;提出一种奖励聚中思想&#xff0c;能大幅增强所有RL算法&#xff01;也即&#xff1a;通过从观察到的奖励中减去平均奖励&#xff0c;来提高连续强化学习问题中折扣方法的性能&…

[含文档+PPT+源码等]精品基于springboot实现的原生Andriod广告播放系统

基于Spring Boot实现的原生Android广告播放系统背景&#xff0c;主要可以从以下几个方面进行阐述&#xff1a; 一、市场需求与背景 移动互联网的快速发展&#xff1a; 随着移动互联网技术的不断进步&#xff0c;智能手机已成为人们日常生活中不可或缺的一部分。人们越来越多地…

2023上半年下午3,4,5

文中的英文很可能是类名。没有英文的段落可以不看 如图&#xff0c;C1和C5应该是父类&#xff0c;有234和678等多个箭头指向他们 所以C2,C3,C4应该是C1的子类&#xff0c;C5同理 聚合表示部分可以脱离整体而存在&#xff0c;整体消失部分也能存在 组合则部分不能脱离整体&…

【C/C++】字符/字符串函数(0)(补充)——由ctype.h提供

零.导言 除了字符分类函数&#xff0c;字符转换函数也是一类字符/字符串函数。 C语言提供了两种字符转换函数&#xff0c;分别是 toupper &#xff0c; tolower。 一.什么是字符转换函数&#xff1f; 顾名思义&#xff0c;即转换字符的函数&#xff0c;如大写字母转小写字母&am…

华为eNSP实验:QINQ技术

QinQ技术是一种扩展VLAN空间的技术&#xff0c;通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能。 QinQ技术允许私网VLAN透传公网&#xff0c;使得在骨干网中传递的报文有两层802.1Q Tag&#xff08;一层公网Tag&#xff0c;一层私网Tag&#xff…

YOLOv5之Common.py

文章目录 1.学习目的2.网络模型![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/67b8dbd00c9b4034ba370fc8b8a6031a.jpeg)3.common.py分析 1.学习目的 YOLOv5中最关键一个模型类 2.网络模型 3.common.py分析 # Ultralytics YOLOv5 &#x1f680;, AGPL-3.0 license…

5G时代,国产化融合通信行业的新机遇

在5G时代&#xff0c;国产化融合通信行业正在经历重要的转型与崛起&#xff0c;国产化融合通信行业正肩负着重要的社会责任&#xff0c;成为了推动我们社会发展的重要力量。5G技术的高速发展以及大规模的商业应用&#xff0c;使国产化融合通信行业迎来了前所未有的发展机遇。 5…

Spring WebFlux 核心原理(2-2)

1、Project Reactor 核心 1.1、新建项目 新建maven项目&#xff0c;将Project Reactor作为依赖项添加到应用程序中&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:x…

sublime Text的提取查找结果功能

notePad中是 sublime Text是快捷键 ctrlshiftF 点击find就行了&#xff0c;会新建一个文件里面是提取的内容 勾选展示上下文的情况