Python_文件操作

news2024/11/16 16:36:03

目录

一、文件编码

二、什么是文件

三、文件操作

1、打开文件 open()打开函数

2、读取文件

3、写入文件 f.write() 使用w模式

4、文件追加 类比文件写入,只是将‘w’-->‘a’

5、文件操作综合案例

一、文件编码

Thinking: 计算机只能识别 0和1,那么文本文件 如何被计算机识别存储在硬盘中?
利用编码技术(密码本)将内容翻译成0和1存入
编码技术:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容
计算机内有许多可用编码:
* UTF-8
* GBK
* Big5  等
不同的编码将内容翻译成二进制也是不同的
编码有许多,要正确使用编码才能进行正确的读写操作
UTF-8是目前比较通用的编码格式
总结以下两个问题
1、什么是编码?
编码就是一种集合规则,记录了内容和二进制之间进行相互转换的逻辑;编码有许多种,我们最常用的是UTF-8编码
2、为什么需要使用编码?
计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中。同时也需要编码将计算机保存的0和1,反向翻译回可以识别的内容。

二、什么是文件

文件是指一个 可以独立操作的程序,可以是文本、图片、声音、视频等,不同的文件可以用不同程序打开。操作系统以文件为单位管理磁盘中的数据。

三、文件操作

文件操作主要包括 打开、关闭、读、写等操作

1、打开文件 open()打开函数

在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件夹
语法:open(name,mode,encoding)
  • name: 是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
  • mode: 设置打开文件的模式(访问模式):只读、写入、追加等
  • encoding:编码格式(推荐使用UTF-8)
示例代码:
注意:此时的‘f’是‘open’函数的文件对象,对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性 或 对象.方法对其进行访问。后续会详细记录面向对象笔记。
mode 常用的三种基础访问模式

2、读取文件

1.读操作相关方法
 1)read() 方法:
文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num就表示读取文件中所有的数据
 2)readlines() 方法:
readline可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表其中每一行的数据一个元素。
 3)readline() 方法:一次读取一行内容
 4)for循环读取 文件行
 5)close() 关闭文件对象
关闭对文件的占用。如果不调用close(),同时程序没有停止运行,那么这个文件将一直被Python占用
 6)with open 语法:
with open(name,mode,encoding)as f:
    f.readlines()
通过在with open的语句块中对文件进行操作,可以在操作完成后自动关闭close文件,避免忘记使用close()方法
操作汇总:
代码演示:
# 打开文件
f = open("D:\Test\Python_test.txt","r",encoding="UTF-8")
print(type(f))
# 读取文件 - read()
print(f"read读取10个字节结果是:{f.read(10)}")
print(f"read读取全部字节结果是:{f.read()}") # 连续调用read会从上一个read的结尾处开始
# 读取文件 - readlines()
lines = f.readlines() # 读取文件的全部行 封装到列表中
print(f"lines的对象类型是:{type(lines)}")
print(f"lines对象内容是:{lines}") # 文件读取就想有个小指针记录读取的位置
# 读取文件 - readline()
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行数据是:{line1}")
print(f"第二行数据是:{line2}")
print(f"第三行数据是:{line3}")
# for循环读取文件行
for line in f:
    print(f"每一行数据:{line}")
# 文件的关闭 close()
time.sleep(30)
f.close()
# with open语法操作文件
with open("D:\Test\Python_test.txt","r",encoding="UTF-8") as f:
    for line in f:
        print(line)

3、写入文件 f.write() 使用w模式

注意:
  • 直接调用write,内容并未真正写入文件,而是会积攒在程序内存中,称之为缓冲区
  • 当调用flush的时候,才会真正将内容写入文件
  • 这样做避免频繁操作硬盘导致效率下降
close()方法内置了flush() with open as f 包括了close()
w --如果文件不存在 会直接创建并写入内容;
# 打开一个并不存在的文件 --创建
with open('D:/Test/write.txt',"w",encoding='UTF-8') as f:
    f.write("hello puuoo") # close()方法内置了flush()
如果文件存在则会清空原来的内容再写入 

4、文件追加 类比文件写入,只是将‘w’-->‘a’

注意:
a模式,文件不存在会创建文件
a模式,文件存在会在最后追加写入文件

5、文件操作综合案例

完成文件备份案例
有一份账单文件,记录了消费收入
需求:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55716.html

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

相关文章

Delaunay三角网之逐点插入法(优化版本三)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 继续对三角网的研究,这一个版本的三角网构网思路很是巧妙,虽然仍是基于点的插入算法,但已经有些分治算法的影子,构网速度相较于前面两个版本要快很多,12万个点可以在1s内完成构网。具体的构网过程如下所述: 1…

查询运行在顶部的app包名及类名

android的ActivityManager会在logcat中打印出当前正在显示的app的包名以及类名,注,这是由ActivityManager打印,使用的日志TAG就是ActivityManager,所以我们在过虑信息时不能以自己程序的进程进行过滤,使用ActivityMana…

GBase 8s 产品功能-高可用和ER

GBase 8s 提供了业界领先的高可用集群技术 HAC, SSC, ER, 提供秒级故障 自动切换功能, 使数据库的可用性达到 99.999%, 具备如下特点: 通过不同方案组合, GBase 8s 具有搭建两地三中心、 同城双…

行业内口碑好值得信赖的短网址,让你不再选择恐惧

转眼一年又过去了,最近发现网络上有各种各样的短网址平台,让人眼花缭乱,都声称免费并且功能强大,但是据我的了解,很多免费的短网址都是有使用上的限制的,比如生成条数、访问次数、有广告等等、还有各种各样…

项目中的奇葩需求你都怎么应对?

XX群聊:“项目中的奇葩需求怎么应对?”(项目三兄弟加入了群聊) 小赵:“无论是啥需求,我都是甲方爸爸至上,尽力满足需求、让客户满意。但每个项目初期我都跟客户处得特别好,项目中期…

音视频同步原理

音视频同步 更多精彩内容 音频系统概述 音频时延payload_delay_ms jitter_delay(neteq)。 在WebRTC中有neteq,所以,音频的卡顿以及卡顿时长都是放在neteq内部进行计算的。 时间戳 时间戳的概念主要有以下几个: ntp时间戳: NTP时间戳是绝…

SPI协议讲解与总结

1.SPI通讯协议 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线 1.1 SPI引脚与工作过程 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一…

GitHub推送代码时弹出验证框总是登录失败

最近同事准备用GitHub布置个人博客,但是提交代码时总是弹出登录框然后输入我GitHub的账号密码后一直提示报错Logon failed, use ctrlc to cancel basic credential prompt,然后我才知道还有人不知道这个问题 2021年8月13日, github不再支持用密码提交代码…

【Mysql】内外连接

文章目录**1.内连接****2.外连接****3.小结**1.内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询 select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;案例:…

IPWorks MQ C++ Edition

IPWorks MQ C Edition 在应用程序中轻松实现消息队列(MQ)通信协议。 IPWorks MQ旨在帮助您轻松实现流行的消息传递协议,以便在网络设备之间进行通信。支持许多常见的协议和服务,包括Azure Relay、AMQP、MQTT、STOMP等。 IPWorks MQ功能 完全符合MQTT版本…

普通物理光学:光栅

透射光栅 光栅常数 a:不透光部分的宽度b:透光部分的宽度dab:光栅常数N:缝数k:光谱的级数衍射图像:单缝衍射多缝干涉 光栅的每条狭缝,都将在接收屏幕上的同一位置,产生同样的单缝夫琅禾费衍射图样各条狭缝的衍射光再在接收屏幕上相…

【Vue脚手架项目的结构】

目录 1. 关于VUE Cli 2. 修改VUE Cli项目的端口号 3. Vue脚手架项目的结构 4. 关于标签 5. 关于路由配置 6. 关于视图组件 7. 应用Element UI 1. 关于VUE Cli VUE Cli:Vue脚手架 在Vue脚手架项目中,使用的是“单页面”的设计模式,也就…

CentOS Linux 的安装

CentOS Linux 的安装 作者:Grey 原文地址: 博客园:CentOS Linux 的安装 CSDN:CentOS Linux 的安装 说明 本安装说明是基于 Windows 10 下 VMware workstation 16 安装 Linux,Linux 版本是 CentOS 8,需…

IPWorks IoT Java Edition

IPWorks IoT Java Edition 在应用程序中轻松实现物联网(IoT)通信协议。 IPWorks IoT旨在帮助您轻松实现联网设备之间通信所需的IoT协议。支持许多常见协议,包括AMQP、MQTT、STOMP、CoAP等。它包括不依赖任何外部库的本地软件组件。 IPWorks物联网功能 在所有QoS级别…

新员工webpack打包后上传服务器页面空白

某天同事小白使用了webpack开发vue项目,在项目开发完成后,使用命令:npm run build对项目进行打包后发布服务器页面显示空白 排查后发现:webpack打包的时候引入js时使用的是绝对路径导致的 解决方案如下 修改webpack打包文件中的…

[附源码]JAVA毕业设计婚纱摄影管理(系统+LW)

[附源码]JAVA毕业设计婚纱摄影管理(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

【Redis-09】面试题之Redis数据结构与对象-RedisObject(下篇)

承接上篇【Redis-08】面试题之Redis数据结构与对象-RedisObject(上篇) 8. type-字符串string 8.1 字符串的三种encoding编码(int embstr raw) 如果保存的是整型,并且可以用long类型标识(-9223372036854…

《InnoDB引擎七》InnoDB关键特性-插入缓存

InnoDB 关键特性 InnoDB存储引擎的关键特性包括: Insert Buffer (插入缓冲)Double Write (两次写)Adaptive Hash Index (自适应哈希索引)Async IO (异步IO)Flush Neighbor Page (刷新领接页) 这些特性为InnoDB存储引擎带来了更好的性能以及更高的可靠性。 插入缓冲…

2023年湖北监理工程师考试时间、报名时间、报考条件是什么?

2023年湖北监理工程师考试时间、报名时间、报考条件是什么? 一、2023年湖北监理工程师考试时间: 参考往年的监理工程师考试时间,预计考试时间为5月份。 二、2023年湖北监理工程师报名时间: 2023年湖北监理工程师报名时间预计3月份…

单例模式【JavaEE初阶】

一、单例模式的概念 单例模式是一种常见的设计模式 。单例模式希望:有些对象,在一个程序中应该只有唯一一个实例,就可以使用单例模式 。换句话说,在单例模式下,对象的实例化被限制了,只能创建一个&#xff…