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

前言:

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

Windows文件路径:

文件管理方式:

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

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

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

那什么是文件路径呢?

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

绝对路径:

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

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

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

再比如:

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

相对路径:

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

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

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

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

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

Python文件操作:

1.打开文件方法

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

如:

python 复制代码
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文件和你的文本文件在一个文件夹里,相对路径和绝对路径是一样的:

python 复制代码
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写入数据:

python 复制代码
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编码格式。

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

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

python 复制代码
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+"参数,就可以同时支持读写文件。

边读边写。

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

相关推荐
看到我,请让我去学习31 分钟前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
GUET_一路向前1 小时前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔1 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
trayvontang1 小时前
Python虚拟环境与包管理工具(uv、Conda)
python·conda·uv·虚拟环境·miniconda·miniforge
伊织code1 小时前
pdfminer.six
python·pdf·图片·提取·文本·pdfminer·pdfminer.six
三千道应用题1 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
hqxstudying1 小时前
JAVA项目中邮件发送功能
java·开发语言·python·邮件
咪咪渝粮1 小时前
JavaScript 中constructor 属性的指向异常问题
开发语言·javascript
最初的↘那颗心1 小时前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文
Q_Q5110082852 小时前
python的软件工程与项目管理课程组学习系统
spring boot·python·django·flask·node.js·php·软件工程