python基础——文件操作【文件编码、文件的打开与关闭操作、文件读写操作】
📝前言:
这篇文章主要讲解一下python中对于文件的基础操作:
1,文件编码
2,文件的打开与关闭操作
3,文件读写操作
🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础以及python入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:无问东西
文章目录
- 一,文件编码
- 二,文件的打开与关闭
- 1,open()函数
- 2,打开模式
- 3,路径的书写
- 4,文件的关闭
- 三,文件的读写操作
- 1,文件的读取
- (1)read()
- (2)readline()
- (3)readlines()
- (4)for循环读取
- 2,文件的写入
- (1)write(content)
- (2)writelines(lines)
- (3)文件的追加
一,文件编码
在学习文件操纵前,我们先来了解一下文件编码
什么是文件编码?
文件编码是指在计算机中存储和表示字符串的方法。它涉及字符集中的字符如何转换为二进制数,以及在读取或写入文件时如何将二进制数转换回字符集。
在 Python 中,当你使用 open()
函数打开文件时,可以指定文件的编码方式。常见的编码方式有:
●
‘utf-8’
:这是 Python 的默认编码,可以表示地球上几乎所有的字符。
●‘gbk’
:这是用于简体中文的编码方式。
●‘latin-1’
:也称为 ISO-8859-1,可以表示大多数西方语言的字符。
… 等等。
注意:没有特殊情况,我们一般使用UTF-8
的格式打开文件,使用不正确的编码可能会导致乱码或无法打开文件的问题。
二,文件的打开与关闭
1,open()函数
我们在对文件进行读写操作前,需要先试用open()
函数打开文件
函数原型:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file
: 这是一个必须的参数,表示要打开的文件名或文件模式。如果 file 是一个字符串,那么它表示的是要打开的文件名;如果file
是一个整数,那么它表示的是文件模式。例如,0 表示以读模式打开,1 表示以写模式打开,2 表示以读写模式打开。
mode
: 这是一个可选的参数,表示文件模式。默认值为 ‘r’,表示读模式。其他常见的模式还有 ‘w’(写模式)和 ‘a’(追加模式)。
buffering
: 这是一个可选的参数,表示缓冲策略。默认值为 -1,表示使用系统默认的缓冲策略。如果设置为 0,则表示无缓冲;如果设置为 1,则表示有缓冲。
encoding
: 这是一个可选的参数,表示文件的编码方式。例如,‘utf-8’、‘gbk’ 等。
errors
: 这是一个可选的参数,表示在编码或解码时处理错误的方式。例如,‘strict’、‘ignore’、‘replace’ 等。
newline
: 这是一个可选的参数,表示在文件中使用的换行符。例如,‘\n’、‘\r\n’ 等。
closefd
: 这是一个可选的参数,表示是否在打开文件时关闭文件描述符。默认值为 True。
opener
: 这是一个可选的参数,表示用于打开文件的函数。默认值为 None,表示使用内建的 open() 函数。
这个有点复杂了,但其实我们常用到的参数就'file'
、mode
以及encoding
,分别是指文件的路径,文件的打开方式以及文件的编码方式(一般情况下使用UTF-8
)
示例一:
(以只读的形式打开一个文件,返回的是一个文件对象):
f = open('file.txt','r',encoding='UTF-8') #注意:encoding要关键字传参
我们还可以用使用 with
语句打开文件,可以确保文件在操作完成后自动关闭,避免资源泄露。
示例二:
# 以读模式打开文件
with open('file.txt', 'r') as f:content = f.read()# 以写模式打开文件
with open('file.txt', 'w') as f:f.write('Hello, world!')
这个时候文件对象就是as
后面的f
2,打开模式
在刚刚的例子中我们提到了’‘r’和’w’:读和写两种打开模式,下面我们将看看其他的模式,并具体介绍一下这些模式:
注意:
打开的文件不存在,python中的“w”
功能就会创建新文件
打开的文件存在,"w"
写入会覆盖原有内容(即把原有内容清空了,再写入)
3,路径的书写
斜杠(/
)或双反斜杠(\
)都可以用来表示路径分隔符。例如:C:\Users\username\Documents
为了确保代码的跨平台兼容性,建议使用斜杠(/
)作为路径分隔符,这样可以同时在Windows、Linux和macOS上运行而无需修改。
4,文件的关闭
文件的关闭使用close()
,示例:
f.close()
三,文件的读写操作
1,文件的读取
(1)read()
用于读取文件的所有内容,读取的内容以字符串的形式储存并返回
语法:
read(num)
num
代表从文件中读取的字符串的长度,单位是字节,如果没有传入参数,则代表读取全部内容
例如:
with open("file.txt", "r") as file:content = file.read()
(注意: 如果有多个read
读取,后面的read
会从前一个read
读取到的末尾开始读)
(2)readline()
用于读取文件中的一行,例如:
with open("file.txt", "r") as file:line = file.readline()
(3)readlines()
读取文件中的所有行(回车符也会被读取),然后每一行为一个元素,以列表的形式储存
例如:
with open("file.txt", "r") as file:lines = file.readlines()
(4)for循环读取
我们还可以用for
循环来读取文件的每一行,得到的每一行都是字符串
例如:
with open("file.txt", "r") as file:for line in file:......
总结:
2,文件的写入
(1)write(content)
这个方法用于将内容写入文件。例如:
with open("file.txt", "w") as file:file.write("Hello, World!")
(2)writelines(lines)
这个方法用于将多行内容写入文件。例如:
with open("file.txt", "w") as file:file.writelines(["Hello", "\n", "World!"])
注意:我们调用上面两种方法写入的时候,内容并不会直接被写入文件里面,内容会被积攒在程序的内存中,即:缓存区
只有当我们调用flush()
方法刷新内容的时候,内容才会出现在文件里
示例:
f = open("D:/test.txt", "w", encoding="UTF-8")
# write写入(原内容会被覆盖)
f.write("Hello World!")
# flush刷新
f.flush()
注意:close()
方法自带flush()
功能
(3)文件的追加
"a"
模式:写入内容的时候,是在原来内容的后面追加
追加写入的函数和"w"
一样,只是打开模式不同
示例:
f = open("D:/test.txt", "a", encoding="UTF-8")
# write写入(原内容不会被覆盖)
f.write("Hello World!")
# flush刷新
f.flush()
🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!
相关文章:
![](https://img-blog.csdnimg.cn/direct/5e269a9f7e134947a89e369ad01875d8.png)
python基础——文件操作【文件编码、文件的打开与关闭操作、文件读写操作】
📝前言: 这篇文章主要讲解一下python中对于文件的基础操作: 1,文件编码 2,文件的打开与关闭操作 3,文件读写操作 🎬个人简介:努力学习ing 📋个人专栏:C语言入…...
![](https://www.ngui.cc/images/no-images.jpg)
rustup update 升级rust时异常 directory does not exist: ‘share/doc/rust/html‘ 解决方法
最近把原来的老版本rust升级为最新版本, 转悠了半天给我报一个 目录不存在异常而升级失败。 异常信息: info: rolling back changes error: failure removing component rust-docs-x86_64-apple-darwin, directory does not exist: share/doc/rust/ht…...
![](https://img-blog.csdnimg.cn/direct/6b14b97192a7430497ce097866ce3d2b.png)
算法学习——LeetCode力扣动态规划篇5
算法学习——LeetCode力扣动态规划篇5 198. 打家劫舍 198. 打家劫舍 - 力扣(LeetCode) 描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统…...
![](https://img-blog.csdnimg.cn/direct/5270c4bc257e4edb899e251a8b2d9f43.png)
C语言-文件
目录 1.什么是文件?1.1 程序文件1.2 数据文件 2.二进制文件和文本文件?3.文件的打开和关闭4.文件的顺序读写5.文件的随机读写5.1 fseek5.2 ftell5.3 rewind 6.文件读取结束的判定7.文件缓冲区 1.什么是文件? 磁盘上的文件就是文件 一般包含两…...
![](https://img-blog.csdnimg.cn/direct/27fc7d2edb5449319cf8da769c410142.png#pic_center)
牛客NC30 缺失的第一个正整数【simple map Java,Go,PHP】
题目 题目链接: https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可…...
![](https://img-blog.csdnimg.cn/direct/f00fe5b0e11e424a8db282162f5d003a.png)
Unity 基于Rigidbody2D模块的角色移动
制作好站立和移动的动画后 控制器设计 站立 移动 角色移动代码如下: using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;public class p1_c : MonoBehaviour {// 获取动画组件private Animator …...
![](https://img-blog.csdnimg.cn/direct/ab39fa354aa646a68290e3e2e846e333.png)
Stata 15 for Mac:数据统计分析新标杆,让研究更高效!
Stata 是一种统计分析软件,适用于数据管理、数据分析和绘图。Stata 15 for Mac 具有以下功能: 数据管理:Stata 提供强大的数据管理功能,用户可以轻松导入、清洗、整理和管理数据集。 统计分析:Stata 提供了广泛的统计…...
![](https://www.ngui.cc/images/no-images.jpg)
vue配置代理proxy
如何配置代理 在 vue devServer服务器配置文件 vue.config.js 的 devServer 选项中配置 proxy module.exports {// publicPath:process.env.NODE_ENV production ? /vue_workspac/aihuhuproject/ : /,//基本路径publicPath: ./,//默认的/是绝对路径,如果不确定在…...
![](https://www.ngui.cc/images/no-images.jpg)
.NET DES加密算法实现
简介: DES(Data Encryption Standard)加密算法作为一种历史悠久的对称加密算法,自1972年由美国国家标准局(NBS)发布以来,广泛应用于各种数据安全场景。本文将从算法原理、优缺点及替代方案等方…...
![](https://img-blog.csdnimg.cn/img_convert/7d8013ec2d9a4c65d11947396e453fa1.jpeg)
构建操作可靠的数据流系统
文章目录 前言数据流动遇到的困难先从简单开始可靠性延迟丢失 性能性能损失性能——分层重试 可扩展性总结 前言 在流式架构中,任何对非功能性需求的漏洞都可能导致严重后果。如果数据工程师没有将可伸缩性、可靠性和可操作性等非功能性需求作为首要考虑因素来构建…...
![](https://img-blog.csdnimg.cn/direct/21400c460f3041f99c230c7065312c75.png)
awesome-cheatsheets:超级速查表 - 编程语言、框架和开发工具的速查表
awesome-cheatsheets:超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需要知道的东西 官网:GitHub - skywind3000/awesome-cheatsheets: 超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需…...
![](https://www.ngui.cc/images/no-images.jpg)
GFW不起作用
闲着折腾,刷openwrt到一个小米3G路由器后,GFW不起作用。后面发现是自己电脑设置了DNS,解析完IP后,在经过代代,IP不在GFW的清单里,所以转发控制就没有起作用。 结论 在经过代代前的所有节点,都…...
![](https://img-blog.csdnimg.cn/direct/9b5950a18ddd4726ba16a1f760450021.png)
AndroidStudio出现类似 Could not create task ‘:app:ToolOperatorDemo.main()‘. 错误
先看我们的报错 翻译过来大概意思是:无法创建任务:app:ToolOperatorDemo.main()。 没有找到名称为“main”的源集。 解决方法: 在.idea文件夹下的gradle.xml文件中 <GradleProjectSettings>标签下添加<option name"delegatedBuild" value"f…...
![](https://www.ngui.cc/images/no-images.jpg)
一些常见的ClickHouse问题和答案
什么是ClickHouse?它与其他数据库系统有什么区别? ClickHouse是一个开源的列式数据库管理系统(DBMS),专门用于高性能、大规模数据分析。与传统的行式数据库相比,ClickHouse具有更高的查询性能、更高的数据…...
![](https://img-blog.csdnimg.cn/direct/88e57adeba5b4f809cd527d1de384d07.png)
第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-分数
solution1 直观上的分数处理 #include <iostream> using namespace std; int main() {printf("1048575/524288");return 0; }#include<stdio.h> #include<math.h> typedef long long ll; struct fraction{ll up, down; }; ll gcd(ll a, ll b){if…...
![](https://img-blog.csdnimg.cn/direct/6fec1ce1f8f24098abecce951a4c31d3.png)
并发编程——4.线程池
这篇文章我们来讲一下线程池的相关内容 目录 1.什么是线程池 1.1为什么要用线程池 1.2线程池的优势 2.线程池的使用 3.线程池的关闭 4.线程池中的execute和submit方法的一些区别 5.线程池的参数和原理 6.自定义线程池 7.总结 1.什么是线程池 1.1为什么要用线程池 首…...
![](https://img-blog.csdnimg.cn/img_convert/379179c0c489d4ce5c53576a5a855753.png)
阿里云魔搭发起“ModelScope-Sora开源计划”,将为中国类Sora模型开发提供一站式工具链
在2024年3月23日的全球开发者先锋大会上,阿里云的魔搭社区宣布了一个新计划:“ModelScope-Sora开源计划”。这个计划旨在通过开源方式,帮助中国在Sora模型类型上做出更多创新。这个计划提供了一整套工具,包括处理数据的工具、多模…...
![](https://img-blog.csdnimg.cn/img_convert/31bd8f1a2cd61905bd0fd957eb367e7f.png)
大模型与数据分析:探索Text-to-SQL
当今大模型如此火热,作为一名数据同学,持续在关注LLM是如何应用在数据分析中的,也关注到很多公司推出了AI数智助手的产品,比如火山引擎数智平台VeDI—AI助手、 Kyligence Copilot AI数智助理、ThoughtSpot等,通过接入人…...
![](https://img-blog.csdnimg.cn/img_convert/0282f56ffa72d4576e18c41e4d8e372f.png)
Unity VisionOS开发流程
Unity开发环境 Unity Pro, Unity Enterprise and Unity Industry 国际版 Mac Unity Editor(Apple silicon) visionOS Build Support (experimental) 实验版 Unity 2022.3.11f1 NOTE: 国际版与国服版Pro账通用,需要激活Pro的许可证。官方模板v0.6.2,非Pro版本会打…...
![](https://img-blog.csdnimg.cn/img_convert/8be14868df14fe6f638548222d48a5b8.webp?x-oss-process=image/format,png)
聊聊k8s服务发现的优缺点
序 本文主要研究一下使用k8s服务发现的优缺点 spring cloud vs kubernetes 这里有张spring cloud与kubernetes的对比,如果将微服务部署到kubernetes上面,二者有不少功能是重复的,可否精简。 这里主要是讲述一下如果不使用独立的服务发现&am…...
![](https://www.ngui.cc/images/no-images.jpg)
Tomcat是如何处理并发请求的?
Tomcat处理请求流程: Tomcat是采用了扩展JDK线程池的方案 :先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处…...
![](https://img-blog.csdnimg.cn/direct/5ae73d4b2ac643b498f3788b50249305.png)
H12-831_561
单选题561、如图所示,R1使用Loopback0接口(IP地址为10.0.1.1/32)与R2的物理接口(IP地址为10.0.12.2/24)建立EBGP邻居关系,以下描述中正确的是哪一项? A.无需在R1和R2的BGP进程下指定ebgp-max-hop B.在R2的BGP进程下配置peer 10.0.1.1 ebgp-max-hop 2,且…...
![](https://img-blog.csdnimg.cn/direct/e9df6996365a416fa62da4a7e96b7220.png)
Java23种常见设计模式汇总
七大原则网站地址:设计模式7大原则+类图关系-CSDN博客 创建型设计模式:创建型设计模式合集-CSDN博客 七大结构型设计模式:7大结构型设计模式-CSDN博客 11种行为型设计模式: 11种行为型模式(上࿰…...
![](https://img-blog.csdnimg.cn/direct/f9d27873055849b3948f563d2b201632.png)
神经网络与深度学习(一)
线性回归 定义 利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法 要素 训练集(训练数据)输出数据拟合函数数据条目数 场景 预测价格(房屋、股票等)、预测住院时间&#…...
![](https://img-blog.csdnimg.cn/direct/897e437d52ad466782cce7f455c5ae9b.png)
算法学习——LeetCode力扣图论篇2
算法学习——LeetCode力扣图论篇2 1020. 飞地的数量 1020. 飞地的数量 - 力扣(LeetCode) 描述 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相…...
![](https://img-blog.csdnimg.cn/direct/c57d2bc465df4bac96ea139b533f84fd.png)
大数据设计为何要分层,行业常规设计会有几层数据
大数据设计通常采用分层结构的原因是为了提高数据管理的效率、降低系统复杂度、增强数据质量和可维护性。这种分层结构能够将数据按照不同的处理和应用需求进行分类和管理,从而更好地满足不同层次的数据处理和分析需求。行业常规设计中,数据通常按照以下…...
![](https://img-blog.csdnimg.cn/direct/aaa3825ab784465eb06c7994b6491179.png#pic_center)
css3之2D转换transform
2D转换transform 一.移动(translate)(中间用,隔开)二.旋转(rotate)(有单位deg)1.概念2.注意点3.转换中心点(transform-origin)(中间用空格)4.一些例子(css三角和旋转) 三…...
![](https://www.ngui.cc/images/no-images.jpg)
pytest中文使用文档----6临时目录和文件
1. 相关的fixture 1.1. tmp_path1.2. tmp_path_factory1.3. tmpdir1.4. tmpdir_factory1.5. 区别 2. 默认的基本临时目录 1. 相关的fixture 1.1. tmp_path tmp_path是一个用例级别的fixture,其作用是返回一个唯一的临时目录对象(pathlib.Path…...
![](https://img-blog.csdnimg.cn/direct/6e9152de778a4814b44e479832babc5d.png)
从0开始搭建基于VUE的前端项目
准备与版本 安装nodejs(v20.11.1)安装vue脚手架(vue/cli 5.0.8) ,参考(https://cli.vuejs.org/zh/)vue版本(2.7.16),vue2的最后一个版本 初始化项目 创建一个git项目(可以去gitee/github上创建ÿ…...
![](https://img-blog.csdnimg.cn/direct/301141dbec9b4c28bcee6b6a0f54dffd.png)
elementUI this.$msgbox msgBox自定义 样式自定义 富文本
看这个效果是不是很炫?突出重点提示内容,对于用户交互相当的棒! 下来说说具体实现: let self = this const h = self.$createElement; this.$msgbox({title: null,message: h("p", {style: "margin-top:10px"}, [h("i", {class: "el-i…...
![](http://g.hiphotos.baidu.com/exp/w=500/sign=7c708ccd4890f60304b09c470910b370/8b13632762d0f703677d95200afa513d2797c57b.jpg)
网站 配色方案/免费推广网站视频
在C#编程中经常需要对一些键值对进行处理,一般我们可以使用字典或哈希表来实现。和字典比起来,哈希表占用系统资源更少更为方便。 下面举例说明哈希表的常用方法: 1, 添加元素; 2, 删除元素; 3, 遍历; 4, 查…...
![](/images/no-images.jpg)
昆山外贸网站建设推广/网页制作与设计
cudaMalloc(void** p, intsize):分配size字节的存储器,并将其首地址赋给*p,至于参数为什么是二级指针,可在C语言中找到答案cudaMallocHost():这个方法是在主机上分配空间,可以加快传输速度&…...
![](https://raw.githubusercontent.com/xinghongfei/awesome-view/master/screenshots/AndroidSwipeLayout.gif)
做学校后台网站/找网站设计公司
awesome-view 项目地址:xinghongfei/awesome-view 简介:自定义 View 有这些足够了 更多:作者 提 Bug 标签: 自定义view- 自定义 View 主要掌握以下四块内容: 绘制机制:掌握 onMeasure,onLayout,…...
如何利用视频网站做数字营销推广/百度知道官网首页登录入口
世界上最安全的地方是哪?大部分人的答案是家。而守护家的安全就绝对离不开一扇坚固的防盗门。现在市场上防盗门品牌繁杂,质量参差不齐,都说自己是最好的,最安全的,但其实内里却是别有乾坤。日上防盗门质检工程师告诉我…...
![](https://img-blog.csdnimg.cn/img_convert/5268f80b9b1e01f982625ef6fac83ca1.png)
做装修的网站怎么做好/杭州百度推广电话
这次给大家带来vue项目中如何使用ueditor,vue项目中使用ueditor的注意事项有哪些,下面就是实战案例,一起来看一下。以vue-cli生成的项目为例1.static文件夹下先放入ueditor文件2.index.html添加如下代码3.webpack.base.conf.js添加如下配置ex…...
![](https://img-blog.csdnimg.cn/img_convert/75f456e49d893d81176e2069b0074046.png)
做盗链电影网站怎么样/个人免费开发app
类型:便捷生活大小:101.2MB评分:10平台:ofo共享单车貌似出了点问题!今天很多朋友都无法登录、显示网络错误,还无法结算,这是怎么回事,又该怎么办呢?来看看吧!…...