190328文件处理
一、文件处理初识
- 打开文件,得到文件句柄并赋值给一个变量
- 通过文件句柄对文件进行操作
- 关闭文件
- 文本示例
汉皇重色思倾国,御宇多年求不得。
杨家有女初长成,养在深闺人未识。
天生丽质难自弃,一朝选在君王侧。
回眸一笑百媚生,六宫粉黛无颜色。
春寒赐浴华清池,温泉水滑洗凝脂。
侍儿扶起娇无力,始是新承恩泽时。
- 基本操作
f = open("长恨歌", 'r', encoding="utf-8") # open函数会使用当前系统的编码打开
data = f.read()
print(data)
f.close()
二、基本文件处理
- 读模式:r
f = open("长恨歌",'r', encoding="utf-8") # open函数会使用当前系统的编码打开print(f.read()) #读取全部,按字符读
print(f.readable()) #判断文件是否可读 True
print(f.readline(), end='') #读一行,end='' 换行符
print(f.readline()) #杨家有女初长成,养在深闺人未识。
print(f.readlines()) #将所有行读处理放到列表中f.close()
- 写模式:w
- 只有字符串才能写到文件中
f = open("dongfei_file", 'w', encoding="utf-8")f.write("汉皇重色思倾国,御宇多年求不得。\n")
f.write("杨家有女初长成,养在深闺人未识。\n")
print(f.writable()) #判断文件是否可写 True
f.writelines(["天生丽质难自弃,一朝选在君王侧。\n", "回眸一笑百媚生,六宫粉黛无颜色。\n"]) #将列表中的元素写到文件中f.close()
- 追加模式:a
f = open("dongfei_file", 'a', encoding="utf-8")f.write("春寒赐浴华清池,温泉水滑洗凝脂。") #写到文件最后f.close()
- 读写模式:r+
写读模式:w+,x+,a+
模拟修改文件,硬盘上的文件是无法修改的
f = open("dongfei_file", 'r', encoding="utf-8")
data = f.readlines()
f.close()f2 = open("new_dongfei_file", 'w', encoding="utf-8")
f2.writelines(data[0]) #文件的处理逻辑
f2.close()
- 自动关闭文件
with open("a.txt", "r", encoding="utf-8") as src_f, \open("new_a.txt", "w", encoding="utf-8") as des_f:data = src_f.readline()des_f.write(data)print(data)
- 二进制读:rb
with open("a.txt", "rb") as f:data = f.read()print(data)print(data.decode())
- 二进制写:wb
with open("b.txt", "wb") as f:f.write(bytes("dongfei 你好\n", encoding="utf-8"))f.write("dongfei2 你好".encode("utf-8"))f.write(b"dongfei3\n") #这样方法不能写中文
- 二进制追加:ab
- 文本模式:t
二进制模式:b,二进制模式可以跨平台
其他方法:
f = open("c.txt", "w", encoding="utf-8")
print(f.closed) #判断文件是否是关闭的
print(f.encoding) #打印文件打开的编码
f.flush() #将内存中修改的数据保存至硬盘
print(f.tell()) #光标当前所在位置
f.seek(0) #控制光标的移动,按字节移动
f.truncate() #截取
- 光标操作
#绝对位置seek
with open("dongfei_file", "r", encoding="utf-8") as f:print(f.tell()) #0f.seek(10)print(f.tell()) #10f.seek(3)print(f.tell()) #3,默认从文件开头seek#相对位置seek
with open("dongfei_file", "rb") as f:print(f.tell()) #0f.seek(10,1)print(f.tell()) #10f.seek(3,1)print(f.tell()) #13 ,以相对位置seek#倒叙位置seek
with open("dongfei_file", "rb") as f:print(f.tell()) #0f.seek(-10,2) #倒叙seek,-10是往回移动print(f.tell())f.seek(-3,2)print(f.tell()) #以相对位置seek
- 读出文件的最后一行
with open("dongfei_file", "rb") as f:for i in f:offs = -10while True:f.seek(offs,2)data = f.readlines()if len(data) > 1:print("文件的最后一行:",data[-1].decode("utf-8"))breakoffs *= 2
转载于:https://www.cnblogs.com/L-dongf/p/10623504.html
190328文件处理相关推荐
- MiniGUI开发指南
MiniGUI 目录 MiniGUI 体系结构 概览 引言 POSIX线程 基于PThread的微客户/服务器结构 多线程通讯的关键数据结构--消息队列 面向对象技术在MiniGUI中的应用 未来考虑 ...
- golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用
RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...
- /var/lib/docker/overlay2/xxxxx no such file or directory docker文件删除引发的问题
记一次误删引发的服务雪崩 K8s node节点磁盘报警,报警后我找到服务中占用磁盘最多的地方,在overlay2目录下,对下面的文件进行了删除 删除后,有状态服务先出现了问题,服务无法启动.停止. ...
- Access to XMLHttpRequest at file from origin ‘null‘ has been blocked by CORS policy谷歌浏览器本地打开项目js文件报错
Access to XMLHttpRequest at 'file:///xxxxx/PQ.BaseInfo.proto' from origin 'null' has been blocked by ...
- 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件
过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...
- zip压缩多个文件,解压时不包含目录层级
假设我们有个目录叫 dev,dev中有很多文件,我们想要将dev中的文件打包,名字可能叫dev.zip,但当我们解压的时候,不想要解压生成一个dev目录,想要直接解压在当前目录,这样如何压缩呢? # ...
- Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多
Linux下创建软链接|硬链接,文件访问为空,提示:x x x: 符号连接的层数过多. 原因:创建符号链接的时候未使用绝对路径,无论是源文件路径还是目标路径,都需要使用绝对路径. 如: ln -s / ...
- springboot设置文件上传大小(tomcat默认1M)
application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...
- 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...
- IDEA设置单个文件、单个包、单个项目的编码格式
IDEA设置单个文件.单个包.单个项目的编码格式 File-> Settings-> File Enclodings 选择编码格式,确定即可. 注意:此处的编码格式设定以后,该包已经存在的 ...
最新文章
- C语言-定义与初始化总结
- 三种编程命名规则(匈牙利法,小驼峰法,大驼峰法)
- HDU2049(错列排序)
- hadoop 3.x 关闭安全模式
- cactiez v11使用配置mysql_cactiez应用监控部署手册.doc
- 2018北京ICPC D. Frog and Portal(构造)
- access查找出生日期年份_Access时间日期比较查询的方法总结
- 在小程序可以完成任务的情况下,为什么程序员非要编写大程序呢?
- 代谢组学结果在线分析:不同组差异代谢物高级韦恩图Venn的绘制——UpSet图
- 2020年郑州大学计算机录取分数线,郑州大学2020年录取分数线公布,河南本科录取分数线最高,上郑大最难...
- Hadoop精华问答 | 基于Hadoop的数据中心有什么好处?
- 营销指南 | 几种常见的微博营销打法
- IT技术资料分享:win10系统如何阻止某个应用程序联网检测更新
- redis:(error) MOVED报错的原因和解决
- ​华为首推一体机,将在产品中融入元宇宙相关元素!
- Covid-19新冠肺炎疫情相关数据集
- 随笔一 EXACT函数
- TiDB基本原理学习
- uni-app简介、条件编译、App端Nvue开发、HTML5+、开发环境搭建、自定义组件、配置平台环境、uniCloud云开发平台
- 3. SpringSecurity 自定义手机号登录