当前位置: 首页 > 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…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...