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

(Python)文件储存的认识,文件路径(文件储存基础教程)(Windows系统文件路径)(基础教程)

前言:

通过不断的学习,我们在写编程的时候,因为每次运行后,计算机会清除这些相关数据,因此文件储存已经成为重要的一部分;在前面的学习中,我们了解过C语言的文件储存,也了解过C++的文件存储,今天我们来看一看Python的文件储存是怎么样的吧!

Windows文件路径:

文件管理方式:

对于一些刚接触到计算机的萌新来说,文件的管理和储存一定是一个非常头疼的问题:诶?我的电脑怎么卡了?C盘怎么满了?怎么选择下载路径啊?等等问题;

其实,每一个计算机都有很多的储存空间,我们一般称为内存;由于数量庞大不好管理,因此才有的文件路径,他就像一个公司一样,一层一层的管理着下一层,如:

此电脑就是最大的老板,他管理着各种盘,各种盘又是小领导,由往下接着管理,以此类推;

那什么是文件路径呢?

文件路径分为绝对路径和相对路径;

绝对路径:

对于Windows系统,绝对路径以分区名加反斜杠(\)开头,路径中每个目录之间用反斜杠进行分隔,最后以目标文件或目标目录结尾。

绝对路径是最直观的路径,他可以看到当前文件存在的地方:

(图片来自网络,如有侵权,立即删除)  

再比如:

可以看到,我的Python的绝对路径就是D:\Thonny\Thonny 

相对路径:

从一个参考位置出发。表示从指定文件位置出发,其他文件处于什么路径。

        用相对路径时,用点(.)表示参照物所在的目录,用点点(..)表示更上一层的父目录。如果继续往上走,就用点点(..)跟上斜杠或者反斜杠进行分隔,后面跟上点点(..)表示当前文件所属目录的父目录的父目录。如果是往更下层走,同样以斜杠或反斜杠来分隔路径中的目录。

        相对路径都是以点(.)或点点(..)开头。

./(.\)是可以省略的,在同一路径下相互用相对路径找到彼此,可以直接使用文件名。

(图片来自网络,如有侵权,立即删除) 

Python文件操作:

1.打开文件方法

比如open()方法,打开文件,括号内放文件路径,可以是相对路径也可以是绝对路径。

如:

f=open("./data.txt","w",encoding="UTF-8")    ##相对路径
f.write("你好,Python!\n")
f.write("我是张大炮")
f.close()f=open("/demo/data.txt","w",encoding="UTF-8")    ##绝对路径
f.write("你好,Python!\n")
f.write("我是张大炮")
f.close()

当然,如果你的项目py文件和你的文本文件在一个文件夹里,相对路径和绝对路径是一样的:

f=open("data.txt","w",encoding="UTF-8")
f.write("你好,Python!\n")
f.write("我是张大炮")
f.close()

open()方法的第二个参数表示模式,模式是一个字符串,常见的字符串有“r”,表示读取模式;“w”表示写入模式。当第二个参数不写的时候,默认为读取模式 ”r”。

读取模式下,如果找不到文件,就会报FileNotFoundError的错误,表示文件不存在

写入模式下,如果找不到文件,就会在当前项目py文件的文件夹里新建一个文本文件,不再报错

open()方法还有一个可选参数 encoding 表示编码方式。一般文件编码方式为 UTF-8。

如果open()方法执行成功,将会返回一个文件对象,后续可以对这个对象进行读取或写入操作。

如f,就是文件对象,后续可以进行一些操作,比如对f写入数据:

f=open("data.txt","w",encoding="UTF-8")
f.write("你好,Python!\n")                        #往文本里写入数据
f.write("我是张大炮")
f.close()                                         #关闭文件

2. 读取方法

read()读取方法一:

运行read()方法会一次性读取文件里面的所有内容,并以字符串的形式返回。一般操作的文件以文本为主。其他类似word文件内有字体颜色、字号区分的文件,很可能读取有误。

运行read()方法后,再次调用时返回的结果为空,因为程序会记录文件读取到哪个位置,第一次运行read()时已经读到结尾,第二次运行时后面已经没有内容。 

 可以看到,下面多出了一个空格换行,表示已经没有内容了

文件太大时不建议使用read()方法,因为读出来的内容会占用很大的内存。如果不需要一次性读取整个文件,可以在read()传一个数字,表示读多少个字节,下次调用read时会从上次结束位置继续往下读。

 可以看到每次只读5个,下次运行在读5个

readline()读取方法二:

只读取文件一行内容,下次调用时继续读取下一行,根据换行符来判断什么时候结束本行。并且换行符会被当成读到的内容的一部分。读取到结尾后,继续读取将会返回空字符串,表示后面已经无内容。

一定要注意到换行符,他相当于一个结束符

注意第一行与第二行之间的空格,他就是换行符也读取了 

readlines()读取方法三:

读取文件内容,并将每行作为列表元素返回。

如上图所示 ,每行结果都会变成列表元素,这样就可以使用list列表一样操作文本了

3.关闭文件:

close()方法就是关闭文本

调用close方法后将会释放系统资源,每次调用文件完成后都应该关闭文件。、

4.写入文件:

写文件与读文件类似,都需要先打开文件,并且在操作完成后关闭文件。

open的第二个参数传入w,即为写文件模式,写文件模式找不到文件,不会像读文件模式那样报错,而是自动创建传入文件名的那个文件。第三个参数为encoding编码格式。

f=open("data.txt","w",encoding="UTF-8")
f.write("你好,Python!\n")                        #往文本里写入数据
f.write("我是张大炮")
f.close()                

使用w模式打开文件进行写入时,如果文件已存在,将会把原有文件内容全部清空。

f=open("data.txt","w",encoding="UTF-8")
f.write("你好,Python!\n")                        
f.write("我是张大炮")
f.close()                                         
f=open("data.txt","w",encoding="UTF-8")
f.write("第一行\n")                        
f.write("第二行")
f.close()                                         
f=open("data.txt","r",encoding="UTF-8")
print(f.readlines())
f.close()

 如上面的代码运行结果就是:

只有第一行第二行数据,没有你好数据 

如果不想重写文件内容,而是增加文件内容,则open()的第二个参数需要传入附加模式”a”参数。如果文件名不存在,会直接创建文件。如图:

无论是”w”模式,还是”a”模式,都不能读取文件原本的内容,如果在这两个模式下调用read()方法,程序会报错不支持读操作(UnsupporttedOperation)。

5.r+,同时支持读写文件

open()方法的第二个参数传入”r+”参数,就可以同时支持读写文件。

边读边写。

注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!

http://www.xdnf.cn/news/16252.html

相关文章:

  • 【17】C# 窗体应用WinForm ——【文本框TextBox、富文本框RichTextBox 】属性、方法、实例应用
  • C++:list(2)list的模拟实现
  • Java中配置两个r2db连接不同的数据库
  • JavaScript:现代Web开发的核心动力
  • Mistral AI开源 Magistral-Small-2507
  • C++查询mysql数据
  • Codeforces Round 181 (Rated for Div. 2)
  • Bert项目--新闻标题文本分类
  • DAY31 整数矩阵及其运算
  • 告别镜像拉取慢!CNB无痛加速方案,一键起飞
  • [论文阅读] 人工智能 + 软件工程 | NoCode-bench:评估LLM无代码功能添加能力的新基准
  • JVM常见工具
  • swagger基本注解@Tag、@Operation、@Parameters、@Parameter、@ApiResponse、@Schema
  • 基于图神经网络的星间路由与计算卸载强化学习算法设计与实现
  • 【Linux手册】操作系统如何管理存储在外设上的文件
  • 基于 Claude Code 与 BrowserCat MCP 的浏览器自动化全链路构建实践
  • iOS 26,双版本更新来了
  • 【web大前端】001_前端开发入门:创建你的第一个网页
  • 二十八、【Linux系统域名解析】DNS安装、子域授权、缓存DNS、分离解析、多域名解析
  • 前端开发 Vue 结合Sentry 实现性能监控
  • 配置DNS正反向解析
  • 告别复杂配置!Spring Boot优雅集成百度OCR的终极方案
  • JAVA算法题练习day1
  • 常见代码八股
  • 【深度之眼机器学习笔记】04-01-决策树简介、熵,04-02-条件熵及计算举例,04-03-信息增益、ID3算法
  • 力扣671. 二叉树中第二小的节点
  • Spring框架
  • 【LeetCode刷题指南】--有效的括号
  • Springboot项目实现将文件上传到阿里云
  • 【PyTorch】图像多分类项目