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

python:文件操作

一、文件路径

在Windows系统中,每个磁盘都有自己的根目录,用分区名加反斜杠来表示。我们定位文件的位置有两种方法,一种是绝对路径,另一种是相对路径。绝对路径是从根目录出发的路径,路径中的每个路径之间用反斜杠来分隔,最后以目标文件或目标目录结尾。相对路径是从一个参照位置出发,我们把参照位置的路径用.来表示,用..来表示更高一级的父目录,再上就用..\..来表示父目录的父目录。往下的规则与绝对路径的相似,以反斜杠为分隔。如果是在同一个文件夹下文件,我们可以省略.\来表示路径。注意下面的第二张图中的斜杠应该改为反斜杠。

很多编辑器能帮我们找到路径,在pycharm中右击文件我们就可以复制这个文件的绝对路径。

二、read方法

f=open(".\\date.txt","r",encoding="utf-8")
print(f.read()) #会读全部文件内容,并打印
print(f.read()) #因为文件内容已经读完,会读空字符串,并打印
f.close()

open后第一个是查看文件的路径,这里使用了相对路径。第二个是操作方式,这里是r也就是read,表示读取文件。第三个是编码方式,这里选择了比较普遍的utf-8。在最后,f.close() 就是在关闭文件,释放资源。

f=open(".\\date.txt","r",encoding="utf-8")
print(f.read(5))
f.close()

我们也可以选择我们需要查看的字符的个数,只需要加一个操作数来表示就能实现。若下面又来一段print(f.read(5))也会按照顺序继续读取并打印。

如果我们需要对文件内容进行一行一行的读取打印,我们可以使用readline()的操作。

f=open(".\\date.txt","r",encoding="utf-8")
print(f.readline()) #读取输出一行
print(f.readline()) #读取输出一行
f.close()

我们发现两行内容中间出现了空行,这是为什么呢?不妨我们先来看看readlines方法。

f=open(".\\date.txt","r",encoding="utf-8")
print(f.readlines()) # readlines会读全部文件内容,并把每行作为列表元素返回
f.close()

现在我们可以来分析readline中出现空行的原因了。在readlines方法的结果中,我们可以看出每行其实都包括\n,又因为两个print语句之间默认会换行,所以就会出现空行。

我们来看看readline一般是如何使用的。

f=open(".\\date.txt","r",encoding="utf-8")
line=f.readline() #读第一行
while line != '': #判断当前行是否为空print(line) #不为空则打印当行line = f.readline() #读取下一行
f.close()

再来看看readlines一般是如何使用的。

f=open(".\\date.txt","r",encoding="utf-8")
lines=f.readlines() #读文件所有内容
for line in lines: #用for语句循环每行的内容print(line) #打印当行
f.close()

有没有发现我们每次结束查看时都需要f.close()来关闭文件,有时候容易忘记。所以我们读取文件还可以使用另一种形式。需要注意的是缩进。

with open(".\\date.txt","r",encoding="utf-8") as f:lines=f.readlines() #读文件所有内容for line in lines: #用for语句循环每行的内容print(line) #打印当行

三、write方法

当我们写入时,只需要将"r"改为"w"就可以了,也就是write写入的意思。

with open(".\\date.txt","w",encoding="utf-8") as f:

在前面我们读取文件时,如果路径不存在,就会出现报错。但是在我们写入文件时并不会,如果路径不存在,会直接创建该路径下的一个文件,并写入。而且,如果该路径下原有文件内容,我们写入时会直接覆盖原有内容。

接下来看如何写入文件内容。

with open(".\\date.txt","w",encoding="utf-8") as f:f.write("hello ")f.write("world")

我们打开date.txt文件进行查看。

需要注意的是,这里的write方法并不会自动换行,如果需要换行就要使用换行符\n。

有时候我们需要的是向文件中添加内容,而不是直接将他替换掉。

这时候我们可以将"w"改为"a",也就是add添加。如果文件原本不存在,也会创建一个。注意的是,这两种方法都不能对文件进行读取。

with open(".\\date.txt","a",encoding="utf-8") as f:f.write("hello ")f.write("world")

那我们将"w"改为"a"之后再运行一遍,我们会发现文件中有两个一样的字符串,一个就是我们刚才write方法写入的,另一个是我们刚刚通过添加写入的。

写入时却不能读取文件有时会比较麻烦。那我们怎么才能同时进行读写文件操作呢?将"a"改为"r+"就可以了。

with open(".\\date.txt","r+",encoding="utf-8") as f:print(f.read())f.write("hello ")f.write("world")

当我们第一次运行这个程序时,因为该文件内容为空,所以打印空字符,接下来才执行写入,只要在第二次再执行时,才可以打印出文本中的内容。

http://www.lryc.cn/news/495064.html

相关文章:

  • Nginx和Apache有什么异同?
  • 泰州榉之乡全托机构探讨:自闭症孩子精细动作训练之法
  • Cookie跨域
  • qt QGraphicsPolygonItem详解
  • “harmony”整合不同平台的单细胞数据之旅
  • 如何构建一个可扩展、全球可访问的 GenAI 架构?
  • QT实战--qt各种按钮实现
  • RNN And CNN通识
  • 生产环境中:Flume 与 Prometheus 集成
  • 求平均年龄
  • Ardusub源码剖析(1)——AP_Arming_Sub
  • 【NLP 2、机器学习简介】
  • 数据结构与算法——N叉树(自学笔记)
  • 【趣味升级版】斗破苍穹修炼文字游戏HTML,CSS,JS
  • 【Oracle】个人收集整理的Oracle常用SQL及命令
  • Linux内核4.14版本——ccf时钟子系统(5)——通用API
  • 安装MySQL 5.7 亲测有效
  • 《Django 5 By Example》阅读笔记:p455-p492
  • Element-UI 官网的主题切换动画
  • Golang 构建学习
  • VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)
  • 分析 系统滴答时钟(tickClock),设置72MHz系统周期,如何实现1毫秒的系统时间?
  • C++优选算法十七 多源BFS
  • Mongodb入门到放弃
  • 青藤云安全携手财信证券,入选金融科技创新应用优秀案例
  • 在CentOS系统中安装工具包的时候报错的解决方法
  • cad软件打不开报错cad acbrandres dll加载失败
  • 14、保存与加载PyTorch训练的模型和超参数
  • 【前端开发】JS+Vuew3请求列表数据并分页
  • Trimble X12助力电力管廊数据采集,为机器人巡视系统提供精准导航支持