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

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()

🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关文章:

python基础——文件操作【文件编码、文件的打开与关闭操作、文件读写操作】

📝前言: 这篇文章主要讲解一下python中对于文件的基础操作: 1,文件编码 2,文件的打开与关闭操作 3,文件读写操作 🎬个人简介:努力学习ing 📋个人专栏:C语言入…...

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…...

算法学习——LeetCode力扣动态规划篇5

算法学习——LeetCode力扣动态规划篇5 198. 打家劫舍 198. 打家劫舍 - 力扣(LeetCode) 描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统…...

C语言-文件

目录 1.什么是文件?1.1 程序文件1.2 数据文件 2.二进制文件和文本文件?3.文件的打开和关闭4.文件的顺序读写5.文件的随机读写5.1 fseek5.2 ftell5.3 rewind 6.文件读取结束的判定7.文件缓冲区 1.什么是文件? 磁盘上的文件就是文件 一般包含两…...

牛客NC30 缺失的第一个正整数【simple map Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可…...

Unity 基于Rigidbody2D模块的角色移动

制作好站立和移动的动画后 控制器设计 站立 移动 角色移动代码如下: using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;public class p1_c : MonoBehaviour {// 获取动画组件private Animator …...

Stata 15 for Mac:数据统计分析新标杆,让研究更高效!

Stata 是一种统计分析软件,适用于数据管理、数据分析和绘图。Stata 15 for Mac 具有以下功能: 数据管理:Stata 提供强大的数据管理功能,用户可以轻松导入、清洗、整理和管理数据集。 统计分析:Stata 提供了广泛的统计…...

vue配置代理proxy

如何配置代理 在 vue devServer服务器配置文件 vue.config.js 的 devServer 选项中配置 proxy module.exports {// publicPath:process.env.NODE_ENV production ? /vue_workspac/aihuhuproject/ : /,//基本路径publicPath: ./,//默认的/是绝对路径,如果不确定在…...

.NET DES加密算法实现

简介: DES(Data Encryption Standard)加密算法作为一种历史悠久的对称加密算法,自1972年由美国国家标准局(NBS)发布以来,广泛应用于各种数据安全场景。本文将从算法原理、优缺点及替代方案等方…...

构建操作可靠的数据流系统

文章目录 前言数据流动遇到的困难先从简单开始可靠性延迟丢失 性能性能损失性能——分层重试 可扩展性总结 前言 在流式架构中,任何对非功能性需求的漏洞都可能导致严重后果。如果数据工程师没有将可伸缩性、可靠性和可操作性等非功能性需求作为首要考虑因素来构建…...

awesome-cheatsheets:超级速查表 - 编程语言、框架和开发工具的速查表

awesome-cheatsheets:超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需要知道的东西 官网:GitHub - skywind3000/awesome-cheatsheets: 超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需…...

GFW不起作用

闲着折腾,刷openwrt到一个小米3G路由器后,GFW不起作用。后面发现是自己电脑设置了DNS,解析完IP后,在经过代代,IP不在GFW的清单里,所以转发控制就没有起作用。 结论 在经过代代前的所有节点,都…...

AndroidStudio出现类似 Could not create task ‘:app:ToolOperatorDemo.main()‘. 错误

先看我们的报错 翻译过来大概意思是:无法创建任务:app:ToolOperatorDemo.main()。 没有找到名称为“main”的源集。 解决方法&#xff1a; 在.idea文件夹下的gradle.xml文件中 <GradleProjectSettings>标签下添加<option name"delegatedBuild" value"f…...

一些常见的ClickHouse问题和答案

什么是ClickHouse&#xff1f;它与其他数据库系统有什么区别&#xff1f; ClickHouse是一个开源的列式数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;专门用于高性能、大规模数据分析。与传统的行式数据库相比&#xff0c;ClickHouse具有更高的查询性能、更高的数据…...

第九届蓝桥杯大赛个人赛省赛(软件类)真题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…...

并发编程——4.线程池

这篇文章我们来讲一下线程池的相关内容 目录 1.什么是线程池 1.1为什么要用线程池 1.2线程池的优势 2.线程池的使用 3.线程池的关闭 4.线程池中的execute和submit方法的一些区别 5.线程池的参数和原理 6.自定义线程池 7.总结 1.什么是线程池 1.1为什么要用线程池 首…...

阿里云魔搭发起“ModelScope-Sora开源计划”,将为中国类Sora模型开发提供一站式工具链

在2024年3月23日的全球开发者先锋大会上&#xff0c;阿里云的魔搭社区宣布了一个新计划&#xff1a;“ModelScope-Sora开源计划”。这个计划旨在通过开源方式&#xff0c;帮助中国在Sora模型类型上做出更多创新。这个计划提供了一整套工具&#xff0c;包括处理数据的工具、多模…...

大模型与数据分析:探索Text-to-SQL

当今大模型如此火热&#xff0c;作为一名数据同学&#xff0c;持续在关注LLM是如何应用在数据分析中的&#xff0c;也关注到很多公司推出了AI数智助手的产品&#xff0c;比如火山引擎数智平台VeDI—AI助手、 Kyligence Copilot AI数智助理、ThoughtSpot等&#xff0c;通过接入人…...

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账通用&#xff0c;需要激活Pro的许可证。官方模板v0.6.2,非Pro版本会打…...

聊聊k8s服务发现的优缺点

序 本文主要研究一下使用k8s服务发现的优缺点 spring cloud vs kubernetes 这里有张spring cloud与kubernetes的对比&#xff0c;如果将微服务部署到kubernetes上面&#xff0c;二者有不少功能是重复的&#xff0c;可否精简。 这里主要是讲述一下如果不使用独立的服务发现&am…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...

统计学(第8版)——统计抽样学习笔记(考试用)

一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征&#xff08;均值、比率、总量&#xff09;控制抽样误差与非抽样误差 解决的核心问题 在成本约束下&#xff0c;用少量样本准确推断总体特征量化估计结果的可靠性&#xff08;置…...

华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手

华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...

多模态学习路线(2)——DL基础系列

目录 前言 一、归一化 1. Layer Normalization (LN) 2. Batch Normalization (BN) 3. Instance Normalization (IN) 4. Group Normalization (GN) 5. Root Mean Square Normalization&#xff08;RMSNorm&#xff09; 二、激活函数 1. Sigmoid激活函数&#xff08;二分类&…...