一、文件处理初识

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过文件句柄对文件进行操作
  3. 关闭文件
  • 文本示例
汉皇重色思倾国,御宇多年求不得。
杨家有女初长成,养在深闺人未识。
天生丽质难自弃,一朝选在君王侧。
回眸一笑百媚生,六宫粉黛无颜色。
春寒赐浴华清池,温泉水滑洗凝脂。
侍儿扶起娇无力,始是新承恩泽时。
  • 基本操作
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
  1. 只有字符串才能写到文件中
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文件处理相关推荐

  1. MiniGUI开发指南

    MiniGUI 目录 MiniGUI 体系结构 概览 引言 POSIX线程 基于PThread的微客户/服务器结构 多线程通讯的关键数据结构--消息队列 面向对象技术在MiniGUI中的应用 未来考虑 ...

  2. golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用

    RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...

  3. /var/lib/docker/overlay2/xxxxx no such file or directory docker文件删除引发的问题

    记一次误删引发的服务雪崩 K8s node节点磁盘报警,报警后我找到服务中占用磁盘最多的地方,在overlay2目录下,对下面的文件进行了删除   删除后,有状态服务先出现了问题,服务无法启动.停止. ...

  4. 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 ...

  5. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件

    过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size +1G| xargs rm 在清理系统日志文件 ...

  6. zip压缩多个文件,解压时不包含目录层级

    假设我们有个目录叫 dev,dev中有很多文件,我们想要将dev中的文件打包,名字可能叫dev.zip,但当我们解压的时候,不想要解压生成一个dev目录,想要直接解压在当前目录,这样如何压缩呢? # ...

  7. Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多

    Linux下创建软链接|硬链接,文件访问为空,提示:x x x: 符号连接的层数过多. 原因:创建符号链接的时候未使用绝对路径,无论是源文件路径还是目标路径,都需要使用绝对路径. 如: ln -s / ...

  8. springboot设置文件上传大小(tomcat默认1M)

    application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...

  9. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

  10. IDEA设置单个文件、单个包、单个项目的编码格式

    IDEA设置单个文件.单个包.单个项目的编码格式 File-> Settings-> File Enclodings 选择编码格式,确定即可. 注意:此处的编码格式设定以后,该包已经存在的 ...

最新文章

  1. C语言-定义与初始化总结
  2. 三种编程命名规则(匈牙利法,小驼峰法,大驼峰法)
  3. HDU2049(错列排序)
  4. hadoop 3.x 关闭安全模式
  5. cactiez v11使用配置mysql_cactiez应用监控部署手册.doc
  6. 2018北京ICPC D. Frog and Portal(构造)
  7. access查找出生日期年份_Access时间日期比较查询的方法总结
  8. 在小程序可以完成任务的情况下,为什么程序员非要编写大程序呢?
  9. 代谢组学结果在线分析:不同组差异代谢物高级韦恩图Venn的绘制——UpSet图
  10. 2020年郑州大学计算机录取分数线,郑州大学2020年录取分数线公布,河南本科录取分数线最高,上郑大最难...
  11. Hadoop精华问答 | 基于Hadoop的数据中心有什么好处?
  12. 营销指南 | 几种常见的微博营销打法
  13. IT技术资料分享:win10系统如何阻止某个应用程序联网检测更新
  14. redis:(error) MOVED报错的原因和解决
  15. ​华为首推一体机,将在产品中融入元宇宙相关元素!
  16. Covid-19新冠肺炎疫情相关数据集
  17. 随笔一 EXACT函数
  18. TiDB基本原理学习
  19. uni-app简介、条件编译、App端Nvue开发、HTML5+、开发环境搭建、自定义组件、配置平台环境、uniCloud云开发平台
  20. 3. SpringSecurity 自定义手机号登录

热门文章

  1. Java中异常处理和设计
  2. python处理websocket
  3. 【GCN】2021年,我终于决定入门GCN
  4. 【EMNLP2020】融合自训练和自监督方法的无监督文本顺滑研究
  5. 介绍4个大神常用而你不常用的python函数--assert,map,filter,reduce
  6. 20191130_C6H6(GT)预测
  7. 机器学习之问题建模(一)
  8. 人工智能数学基础之线性代数(持续更新)
  9. 《流畅的Python》读书笔记——符合Python风格的对象
  10. 《.Net 软件设计新思维》作者讲述成书的背后故事