Python学习-----文件操作(读写定位篇)

news/2024/4/26 4:37:47/文章来源:https://blog.csdn.net/m0_73633088/article/details/129132614

目录

前言:

1.打开文件 (open)

关闭文件(close)

2.文件的读取(文件变量名 f)

(1)整体读取(read)

(2)读取一行(readline)

(3)读取多行(readlines)

3.文件的写入(文件变量名f)(write)

 4.判断文件的可读性、可写性、是否关闭完全(文件变量名f)

(1)判断文件的可读性(readable)

(2)判断文件的可写性(writeable)

(3) 判断文件是否关闭完全(closed)

 5.文件的定位(文件变量名为f)

(1)自定义读写位置(seek)

 (2)获取当前位置(tell)

 6.with open 打开文件方法


前言:

        前面我们学过C语言操作文件,文件有很多种,.txt、.mp3、.doc、.jpg等等……,一般我们是从文本文件txt开始去学习了,这里我们就以文本文件为学习对象,详细讲解Python中文件操作方式。

这个是c语言文本文件操作方法C语言 文本文件读取、写入与定位(详细介绍)_c语言文件的读取和写入_Python欧尼酱的博客-CSDN博客

1.打开文件 (open)

格式:

f = open(文件路径,操作符,encoding=编码)

说明:

文件路径:包括相对路径和绝对路径,如果不写的话,系统会默认当前文件夹的目录

操作符:包括 r(读取read),w(写入write)、a(追加append)、wb(以二进制流写入)、rb(以二进制流读取)……

encoding:这个是设置字符编码,一般用utf8,这个是世界万能编码(几乎集合了世界所以文字字符)。另外介绍 GBK(中文编码)、ASCII(阿斯克码)

f=open(r"./user.txt",'w',encoding='utf8')
f.close() #关闭文件
#说明:
#如果这个文本文件是不存在的,系统会创建一个新的文本文件,如果存在的话,w操作符写入的数据会把原来的内#容覆盖
#r 是表示原始字符串
#./ 是表示当前目录,../ 是表示上一级目录

关闭文件(close)

f.close()

说明:当我们操作完了文件之后一定要记得关闭文件,免得出现内存泄露

2.文件的读取(文件变量名 f)

r

(1)整体读取(read)

格式:

f.read(num)

说明:这个函数是以整个文本为读取对象的,num是表示读取数量,如果num不写的话,那么就读取全部文本,如果num写了,就读取num个字符,最后是返回一个字符串的,当num大于文本里面字符的个数也不会报错

 这个是当前文本文件的内容:

f=open(r"./user.txt",'r',encoding='utf8') 
s=f.read() 
print(s)  #读取完成了之后,文件读取指针就在末尾,下面索性就关闭再重新打开
#输出结果:HelloWord,my friend
f.close()  #关闭文件f1=open(r"./user.txt",'r',encoding='utf8') #当要再次读取就的再次打开,出现获取变量
s1=f1.read(2) #表示读取两个字符
print(s1)
#输出结果:He
f1.close()

(2)读取一行(readline)

 f.readline(num)

说明:这个函数是只读取一行,num的用法跟上面是一样的

文本内容:

f=open(r"./user.txt",'r',encoding='utf8')
read=f.readline() #读取第一行全部
print(read)
#输出结果:HelloWord,my friend
read1=f.readline() #此时文件读取指针到了第二行,所以就从第二行开始
print(read1)
#输出结果:nice to meet you

(3)读取多行(readlines)

f.readlines(num) 

说明:这个是吧文本内容全部按行读取,每行为一个字符串,结果返回这些字符串组成的列表,num用法同上。

f=open(r"./user.txt",'r',encoding='utf8')
r=f.readlines(2) #读取全部数据,然后返回一个列表,其中的换行符\n也会读取进去
print(r) #输出这个列表
for i in r:  #用循环依次输出print(i,end='')
f.close()
#输出结果:
# ['HelloWord,my friend\n', 'nice to meet you\n', '156666\n', 'good night!!']
# HelloWord,my friend
# nice to meet you
# 156666
# good night!!

3.文件的写入(文件变量名f)(write)

f.write(内容) 

注意:写入了之后就必须关闭文件!!! 

f=open(r"./user.txt",'w',encoding='utf8')
f.write('''my love\n
kun\n
wawd
''')
f.close()

查看写入的文件: 

 4.判断文件的可读性、可写性、是否关闭完全(文件变量名f)

(1)判断文件的可读性(readable)

f.readable()

说明:这个函数的返回值是一个布尔变量,如果文件具备可读性就返回True,反之返回False

f=open(r"./user.txt",'w',encoding='utf8')
print(f.readable())
f.close()
#输出结果:Falsef=open(r"./user.txt",'r',encoding='utf8')
print(f.readable())
f.close()
#输出结果:True

(2)判断文件的可写性(writeable)

f.readable()

说明:这个函数的返回值是一个布尔变量,如果文件具备可写性就返回True,反之返回False

f=open(r"./user.txt",'w',encoding='utf8')
print(f.writable())
f.close()
#输出结果:Truef=open(r"./user.txt",'r',encoding='utf8')
print(f.writable())
f.close()
#输出结果:False

(3) 判断文件是否关闭完全(closed)

f.closed

说明:这个函数的返回值是一个布尔变量,如果文件完全关闭就返回True,反之返回False

f=open(r"./user.txt",'w',encoding='utf8')
w=f.write('hello')
f.close()
print(f.closed)
#输出结果:True

 

 5.文件的定位(文件变量名为f)

(1)自定义读写位置(seek)

f.seek(size,position)

说明:参数size是表示文件指针移动的字节数(正数表示右移,负数表示左移),position 是表示开始定位的初始位置,0表示从头开始,1表示从此时的位置开始,2表示从末尾开始,如果没有去设置的话,系统会默认从此时的位置开始。

补充说明:在utf8编码中,中文的字节数是3,而在GBK编码中,中文是占2个字节。英文不管在什么编码下都是占1个字节(所以要注意看编码格式,如果用utf8编码读取中文只读取/偏移3个字节就会报错的!)

 示例1:

f=open(r"./user.txt",'r',encoding='utf8')
f.seek(3,0)
print(f.read())
#输出结果:达西瓦:Python欧尼酱
#          thank you

 示例2:

f=open(r"./user.txt",'r',encoding='utf8')
f.seek(-9,2)
print(f.read())
#结果报错:io.UnsupportedOperation: can't do nonzero end-relative seeks

 原因分析:在Python3中,seek文件指针初始位置是只能从开头开始,而不可以从末尾开始,而Python2是允许的。

解决方法:以二进制流去读取每一个字节码,所以把操作符由 r 改为 rb ,同时encoding去掉,改为 f=open(r"./user.txt",'rb')

 效果:

f=open(r"./user.txt",'rb')
f.seek(-9,2)
print(f.read())
#输出结果:b'thank you'

 (2)获取当前位置(tell)

f.tell()

说明:这个函数的返回值是当前文件指针的位置,返回的是从头开始到此时文件指针的位置所经历过的总字节数(偏移字节数)

文本内容: 

f=open(r"./user.txt",'r+',encoding='utf8')
a=f.read()
print(a)
print(f.tell()) #测量文件指针偏移了多少个字节
#输出结果:39

 6.with open 打开文件方法

格式:

with open(文件名/文件路径,操作文件,字符编码[encoding='utf-8']) as 别名:

        内容

        ……

 说明:这种写法是不需要关闭文件的,系统会默认关闭文件,写法是采样缩进原则

示例:

with open(r"./user.txt",'w',encoding='utf8') as f:f.write('流浪地球2')
print(f.closed)  #判断文件是否关闭
#输出结果:True

 

OK,这一期就到这里了,thanks~~~ 

分享一张壁纸 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三次握手四次挥手详细解析面试常问

文章目录1.第2次握手传回了ACK,为什么还要传回SYN?2.断开连接-TCP 四次挥手3.为什么要四次挥手?4.为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?5.如果第二次挥手时服务器的 ACK 没有送达客户端&#x…

51-52 - 进程状态设计

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 问题2. 进程状态设计2.1 任务生命周期2.2 任务的状态2.3 任务的生命周期与状态切换2.4 状态切换概要设计2.4.1 核心数据结构>内核队列2.4.2 KillTask() 实现思路2.4.3 整体实现规划2.4.4 编程实验:任务生命周期状态…

Axios二次封装和Api的解耦

目录 一、axios三种基本写法 二、axios的二次封装 三、Api的解耦 一、axios三种基本写法 1)get方法(是最简单的): 写法二: 2)post: 3)axios请求配置 默认是get请求,如…

蓝海创意云vLive虚拟直播亮相2023昆山元宇宙产品展览会

2月15日-19日,由中国计算机行业协会“元宇宙创见未来”2023元宇宙产品展览会在江苏昆山隆重召开,共吸引了省内外32家企业参展,展出近百款元宇宙产品或技术,涵盖芯片、显示、VR、AR等硬件设备,以及工业、文旅、娱乐、教…

IDEA性能优化设置(解决卡顿问题)修改内存

在我们日常使用IDEA进行开发时,可能会遇到许多卡顿的瞬间,明明我们的机器配置也不低啊?为什么就会一直卡顿呢? 原来这是因为IDEA软件在我们安装的时候就设置了默认的内存使用上限(通常很小),这就…

火山引擎数智平台 ByteHouse 入围稀土掘金《Top10 年度创新产品》

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,国内开发者技术社区稀土掘金发布「2022 稀土掘金引力榜」,旨在盘点 2022 年在数字化转型领域内最具影响力、创新力及潜质的个人、企业、…

ASP.NET MVC | 简介

目录 前提 1.教程 2.MVC 编程模式 最后 前提 在学习学过很多课程,但是最主要学的还是ASP.NET MVC这门课程,工作也是用的ASP.NET MVC,所以写一点ASP.NET MVC的东西,大家可以来看看,我自己不会的时候也不用找别的地方…

「TCG 规范解读」第8章 TPM工作组 TPM 1.2中 SHA1的使用

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

如何使用 ChatGPT 编写 SQL JOIN 查询

通过清晰的示例和解释,本文展示了 ChatGPT 如何简化和简化创建复杂 MySQL 查询的过程,使用户更容易与数据库交互并检索他们需要的数据。无论您是初学者还是经验丰富的开发人员,本文都提供了有关如何利用 ChatGPT 来增强您的 MySQL 查询编写技…

微信公众号抽奖怎么做_分享微信抽奖小程序制作的好处

在H5游戏中,抽奖是最受消费者喜爱的模式之一。将H5微信抽奖活动结合到营销中,可以带来意想不到的效果,带流量和曝光率,所以许多企业也会在做活动时添加上不同类型的H5微信抽奖活动。编辑那么,新手怎么搭建微信抽奖活动…

钓鱼网站+persistence植入后门程序+创建用户

本实验实现1: 利用MS14-064漏洞,会生成一个网址,诱导用户点击,打开后,会直接连接到发起攻击的主机上,即可攻击成功。 本实验实现2: 一旦入侵成功,则拿到控制目标主机的部分权限&…

【论文阅读】SSR-Net: 一个小型的 软分段回归网络 用于年龄估计

原始题目SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation中文名称SSR-Net: 一个小型的 软分段回归网络 用于年龄估计发表时间2018年7月13日平台IJCAI-18来源台湾中央研究院、国立台湾大学文章链接https://www.ijcai.org/proceedings/2018/0150.pdf开…

2023-02-20干活小计:

所以我今天的活开始了: In this paper, the authors target the problem of Multimodal Name Entity Recognition(MNER) as an improvement on NER(text only) The paper proposes a multimodal fusion based on a heterogeneous graph of texts and images to mak…

Renegade:基于MPC+Bulletproofs构建的anonymous DEX

1. 引言 白皮书见: Renegade Whitepaper: Protocol Specification, v0.6 开源代码见: https://github.com/renegade-fi/renegade(Renegade p2p网络每个节点的核心网络和密码逻辑)https://github.com/renegade-fi/mpc-bulletpr…

OpenShift 4 - 将 VMware 虚机迁移至 OpenShift Virtualization(视频)- 温迁移

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.12 的 OpenShift 环境中验证 文章目录了解 Warm Migration为 VMware VM 配置 CBT用 Warm Migration 方式迁移 VMware VM创建 Migration plan执行 Migration plan演示视频了解 Warm Migr…

漫画 | Python是一门烂语言?

这个电脑的主人是个程序员,他相继学习了C、Java、Python、Go, 但是似乎总是停留在Hello World的水平。 每天晚上,夜深人静的时候,这些Hello World程序都会热火朝天地聊天但是,这一天发生了可怕的事情随着各个Hello wor…

小程序(十)签到业务流程分析

文章目录一、如何获取地理信息?二、如何判定某地区新冠疫情的风险等级?系统的人脸签到模块包含的功能非常丰富,不仅仅只有人脸识别的签到功能,而且还可以根据用户签到时候的地理定位,计算出该地区是 新冠疫情 的 高风险…

【可视化实战】Python 绘制出来的数据大屏真的太惊艳了

今天我们在进行一个Python数据可视化的实战练习,用到的模块叫做Panel,我们通过调用此模块来绘制动态可交互的图表以及数据大屏的制作。 而本地需要用到的数据集,可在kaggle上面获取 https://www.kaggle.com/datasets/rtatman/188-million-us…

【STM32笔记】__WFI();进入不了休眠的可能原因(系统定时器SysTick一直产生中断)

【STM32笔记】__WFI();进入不了休眠的可能原因(系统定时器SysTick一直产生中断) 【STM32笔记】低功耗模式配置及避坑汇总 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置&am…

UnsupportedOperationException

原因&#xff1a;返回值为list时&#xff0c;返回值类型应为具体的类型参考文章&#xff1a;(139条消息) mybatis中返回结果类型为集合类型&#xff08;List、Map&#xff09;_毒毒毒毒丶的博客-CSDN博客_mybatis返回list<map>集合UnsupportedOperationException 是用于表…