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

【python】文件

在python中可以通过文件操作,将数据保存到计算机硬盘中文件,可以包含文本数据,也可以包含二进制数据(图片,视频,音频等)。

目录

前言

正文

一、基本语法

        1、函数open()打开file 返回一个文件对象

                1.1、文件路径

                        1)相对路径

                        2)绝对路径(完整的路径)

                1.2、访问模式mode

                1.3、encoding = '指定编码格式'

        2、文件中常用的方法

        3、实操:通过文件操作复制一张图片,并将其名称修改

 二、with上下文管理

三、文件定位

总结


前言

        如果我们想要将一个数据永久的保存到计算机中/读取计算机中的文件,那么我们就需要使用python中的文件操作,将指定的数据写到文件里/读取出来。一般而言读/写文件的操作分为三步:

        1、打开文件 open()

        2、操作文件

                读:把文件里的内容读出来 read()

                写:把内存中的内容写到文件里 write()

        3、关闭文件 close()

注意为了避免系统资源浪费,同时也能保证数据不会丢失,在对一个文件操作结束时一定要关闭该文件。


正文

一、基本语法

        1、函数open()打开file 返回一个文件对象

        文件对象 = open('文件路径',mode='指定访问模式',encoding='指定编码格式')

                1.1、文件路径

                在文件的处理中文件的路径是尤为重要的,如果路径出现错误会引发代码或者程序的错误,一般而言我们的文件路径分为相对路径和绝对路径:

                        1)相对路径

                        相对路径通过当前执行文件所在的位置进行查找

                        如:aaa.txt  表示当前路径下的aaa.txt文件

                        同时我们可以通过不同的文件操作符来控制目录中的上下级

                        ../  表示上一级目录

                        目录名/    表示该目录下的文件

                        目录关系如下:

读取方式:

file1 = open('1.txt')  # 读取当前目录下的文件
file2 = open('文件/2.txt')  # 读取子目录中的文件
file3 = open('../3.txt')  # 读取上一级的文件
# 以上操作可以组合起来
file4 = open('文件/../1.txt')  # 读取下一级再读取上一级
file5 = open('../代码/文件/2.txt')  # 读取上一级在读取下两级
                        2)绝对路径(完整的路径)

                        绝对路径通过指定该文件在电脑中的具体位置来对该文件进行操作。

                        如:F:\python\aaa.txt   表示在该电脑的f盘python目录下aaa.txt文件

                1.2、访问模式mode
 文件的读写模式
模式模式名称含义
r只读只进行读取的操作,如果读取的文件不存在则会报错
w只写只进行写的操作,如果读取的文件不存在则会创建一个新的文件,如果写入的文件中存在内容会被覆盖
a追加进行写的操作,如果文件不存在则会创建一个新的文件,文件存在在会在该文件的末尾进行写入
组合字符
字符名称含义
b二进制在文件的读写模式后添加b字符,表示读写二进制文件,如rb表示读取二进制文件
+可读可写r+:表示可读写文件,会先进行读的操作,文件不存在会报错
w+:表示可读写文件,会先进行写的操作,文件不存在则创建新文件,打开文件会覆盖原来的内容
                1.3、encoding = '指定编码格式'

                如果读取或写入文件,和文件的编码格式指定的不匹配,将会出现乱码情况,这时就需要手动去指定编码格式。读二进制类型的数据(图片、视频) 不需要加上encoding

                没有指定默认就操作系统使用自己默认的编码 Linux(utf-8) window(gbk)

        2、文件中常用的方法

文件中常用的方法
操作函数含义
关闭文件文件对象.close()向操作系统发生关闭文件请求 回收系统资源
读取文件内容文件对象.read(n)读取文件里数据,n表示从文件中读取数据的长度,省略表示全部读取
文件对象.readline()一次读取一行的内容
 文件对象.readlines()按照行的方式一次性读取全部内容,返回数据是一个列表
写入文件文件对象.write(str)只能写入字符串类型

        注意文件对象是可迭代对象,所以我们可以通过for循环来进行逐行读取

lin = 'abcd\nefg\nhijkl\n'
with open('3.txt', 'w') as f:f.write(lin)
with open('3.txt', 'r', encoding='utf-8') as f:for i in f:print(i, end='')

        3、实操:通过文件操作复制一张图片,并将其名称修改

# 打开文件
file1 = open('1.jpg', 'rb')
# 读取文件
img = file1.read()
# 关闭文件
file1.close()
file2 = open('1_copy.jpg', 'wb')
# 写入文件
file2.write(img)
file2.close()

 二、with上下文管理

        在对文件的处理中,如果我们遇见较多的操作就容易忘记关闭文件而造成资源的浪费,为了避免这总情况,我们通常会使用with语句来对文件进行操作。

        语法:with open(文件位置,mode='模式',encodeing='编码') as 文件变量名:

                        文件变量名.write()

                        文件变量名.read()

        同时with语句能使我们的代码更加简洁也能更加直观的表现出对某文件的操作过程。

        如上面复制图片的过程可以写成:

with open('1.jpg', 'rb') as f1:img = f1.read()
with open('1_copy.jpg', 'wb') as f2:f2.write(img)

三、文件定位

        在对文件进行读取时,文件读取的位置或随着读取字符个数而往后移动,如:

lin = 'abcd\nefg\nhijkl\n'
with open('3.txt', 'w') as f:f.write(lin)
with open('3.txt', 'r', encoding='utf-8') as f:print(f.read(5), end='')print(f.read(5), end='')

        可以看到虽然都是读取五个字符,但是结果却不同,这就是因为文件的读取位置发生了改变。如果我们需要多次读取同一块文件的数据或指定读取的位置,那我们可以通过seek函数来对文件的读取位置进行定位。

        语法:文件变量名.seek(字节数,whence)

                字节数:表示需要移动的个数

                whence:表示要从哪个位置开始移动;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。默认值为 0。

        注意:对于基于文本模式的文件对象(默认情况下是文本模式),只能从文件的开头(whence=0)进行偏移量的设置,而不能从当前位置(whence=1)或者文件末尾(whence=2)。

lin = 'abcd\nefg\nhijkl\n'
with open('3.txt', 'w') as f:f.write(lin)
with open('3.txt', 'r', encoding='utf-8') as f:print(f.read(5), end='')f.seek(0)  # 表示从第零个字符开始读取print(f.read(5), end='')f.seek(2)  # 表示从第二个字符开始读取print(f.read(5), end='')

总结

        Python提供的文件操作功能,使得处理文件变得高效且易于实现。在实际应用中,文件操作是Python编程中常见的任务之一,能够帮助实现数据的持久化存储和读取。是一个十分好用的操作。

相关文章:

【python】文件

在python中可以通过文件操作,将数据保存到计算机硬盘中文件,可以包含文本数据,也可以包含二进制数据(图片,视频,音频等)。 目录 前言 正文 一、基本语法 1、函数open()打开file 返回一个文件对象 1.1、文件路径 1&a…...

《Attention Is All You Need》核心观点及概念

这个文件据说是一篇很厉害的AI论文,https://arxiv.org/pdf/1706.03762 这篇论文《Attention Is All You Need》确实是AI领域中的一个里程碑,它改变了我们处理语言的方式。 下面小编会用简单的语言来解释这篇文章的核心观点和学术概念,并告诉大家它为什么很厉害。 核心观点…...

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.9价值交付系统

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…...

JS+H5美观的带搜索的博客文章列表(可搜索多个参数)

实现 美观的界面(电脑、手机端界面正常使用)多参数搜索(文章标题,文章简介,文章发布时间等)文章链接跳转 效果图 手机端 电脑端 搜索实现 搜索功能实现解释 定义文章数据: 文章数据保存在一个 JavaScri…...

牛客周赛 Round 54 (c++题解)

比赛地址 : 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A 输出o的个数&#xff1b; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \n using namespace std; typedef long long LL;inlin…...

htsjdk库Genotype及相关类介绍

在 HTSJDK 库中,处理基因型的主要类包括 Genotype、FastGenotype、GenotypeBuilder 以及相关的类和接口。以下是这些类和接口的详细介绍: Genotype 类 主要功能 表示基因型:Genotype 类用于表示个体在特定变异位置上的基因型。基因型是对个体在变异位置上的等位基因组合的…...

C++ 最短路(spfa) 洛谷

拉近距离 题目背景 我是源点&#xff0c;你是终点。我们之间有负权环。 ——小明 题目描述 在小明和小红的生活中&#xff0c;有 N 个关键的节点。有 M 个事件&#xff0c;记为一个三元组 (Si,Ti,Wi)&#xff0c;表示从节点 Si​ 有一个事件可以转移到 Ti​&#xff0c;事件…...

MySQL的数据类型

文章目录 数据类型分类整型bit类型浮点类型字符串类型charvarchar 日期和时间类型enum和set find_ in_ set 数据类型分类 整型 在MySQL中&#xff0c;整型可以指定是有符号的和无符号的&#xff0c;默认是有符号的。 可以通过UNSIGNED来说明某个字段是无符号的。 在MySQL中如…...

xss漏洞(四,xss常见类型)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言&#xff1a; 1&#xff0c;本文基于dvwa靶场以及PHP study进行操作&#xff0c;靶场具体搭建参考上一篇&#xff1a; xss漏洞&#xff08;二&#xff0c;xss靶场搭建以及简单…...

繁简之争:为什么手机芯片都是 ARM

RISC 和 CISC 指令集 之前的文章《揭秘 CPU 是如何执行计算机指令的》中说到&#xff0c;如果从软件的角度来讲&#xff0c;CPU 就是一个执行各种计算机指令&#xff08;Instruction Code&#xff09;的逻辑机器。 计算机指令集是计算机指令的集合&#xff0c;包括各种类型的…...

【nnUNetv2进阶】十九、nnUNetv2 使用ResidualEncoder训练模型

nnunet使用及改进教程。 【nnUNetv2实践】一、nnUNetv2安装 【nnUNetv2实践】二、nnUNetv2快速入门-训练验证推理集成一条龙教程 【nnUNetv2进阶】三、nnUNetv2 自定义网络-发paper必会-CSDN博客 其他网络改进参考: 【nnUNetv2进阶】四、nnUNetv2 魔改网络-小试牛刀-加入…...

Unity3D ShaderGraph 场景扫描光效果实现详解

引言 在Unity3D游戏开发中&#xff0c;创建吸引人的视觉效果是提升游戏沉浸感的关键之一。场景扫描光效果&#xff0c;作为一种动态且富有表现力的视觉元素&#xff0c;能够为游戏场景增添不少亮点。通过Unity的ShaderGraph工具&#xff0c;我们可以轻松地实现这种效果&#x…...

JS中运算符优先级

优先级顺序从高到低为&#xff1a; 括号 ()成员访问 . 和 函数调用 ()一元运算符 !、、-、~乘法 *、除法 /、取余 %加法 、减法 -位移运算符 <<、>>、>>>比较运算符 <、<、>、>等于 、不等于 !、严格等于 、严格不等于 !位与 &位异或 ^位…...

分享6款有助于写论文能用到的软件app!

在学术写作中&#xff0c;选择合适的软件和工具可以大大提高效率和质量。以下是六款有助于写论文的软件app推荐&#xff0c;其中特别重点介绍千笔-AIPassPaPer这款AI原创论文写作平台。 1. 千笔-AIPassPaPer 千笔-AIPassPaPer是一款功能全面且高效的AI原创论文写作平台。它能…...

Python图形验证码的识别:一步步详解

在Web开发和自动化测试中&#xff0c;图形验证码的识别是一项常见且重要的任务。图形验证码作为防止自动化攻击的一种手段&#xff0c;通过随机生成包含字符或数字的图片来增加用户验证的难度。然而&#xff0c;对于需要自动化处理的场景&#xff0c;如Web自动化测试或爬虫&…...

Jenkins未授权访问漏洞

Jenkins未授权访问漏洞 默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令&#xff0c;攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务&#xff0c;通过脚本执行界面从而获取服务器权限。 一、使用以下fofa语法进行产品搜索 port&…...

什么情况下跑代码内存才会爆

内存爆掉&#xff08;即内存溢出&#xff09;通常是由于代码在处理数据或计算时消耗了过多的内存资源&#xff0c;导致系统内存不足。以下是一些常见场景和代码示例&#xff0c;可能会导致内存爆掉&#xff1a; 1. 超大数据集加载: 加载非常大的数据集到内存中&#xff08;特…...

基于arcpro3.0.2运行报错问题:不能加载文件System.Text.Encoding.CodePages, Version=8.0.0.0

基于arcpro3.0.2运行报错问题:不能加载文件System.Text.Encoding.CodePages, Version8.0.0.0 报错问题描述&#xff1a; 基于arcpro3.0.2运行报错问题: Could not load file or assembly System.Text.Encoding.CodePages, Version8.0.0.0 解决办法&#xff1a; 重新拷贝打包生…...

elk+filebeat+kafka集群部署

实验框架图 192.168.124.10 es1 192.168.124.20 es2 192.168.124.30 losgtash kibana 192.168.124.50 MySQL nginx httpd 上一篇做完es1和es2以及192.168.124.30的部署 在192.168.124.50做配置部署 开启MySQL、nginx、http 因为nginx和http默认端口为80&#xff0…...

C++生化危机1.5源码

代码特别长&#xff0c;如若报错&#xff0c;请把1e9改成1000000000。 //1.5.12 #include <conio.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <time.h> #include <direct.h> i…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...