一、文件—永久保存数据
我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。
二、Python文件操作介绍
下面会从文件的读写,以及修改去介绍python如何操作文件,首先先介绍,python的文件操作语法。
f = open('文件路径',mode = 'r',encoding='utf-8')
f.close()
常用语法如上,首先需要填写要操作文件的路径,然后选择mode(模式),常用的模式有r(读),w(写),r+(读写),w+(写读),
a(追加写),还有b模式(bytes模式)的读写方法
1、读模式(r)
在读模式前需要自己创建一个文件,然后找到路径以及确认文件的编码方式才能成功读到文件内容。下面以创建的文本,文件操作1.txt为例,路径为H:文件操作1.txt 。文本内容如下:
f = open('H:文件操作1.txt',mode='r',encoding='gbk') g = f.read() print(g)
f.close()
如上所示,我们选择r,读模式,编码格式因为我们操作系统是gbk,所以我们将encoding设置为gbk
运行结果:
上面介绍的g.read(),是文件读的方法,read是将文本的中的字符串一次性全部读到内存然后赋值给变量,那么大家有没想过,如果文本大小有几个G甚至十几个G,你一次性将内容加载到内存,那么你的电脑内存一下就爆了。所以我们通常采用领一种方式。readline()方式进行读写。
首先我们手动将上述文本的内容增加至三行。
f = open('H:文件操作1.txt',mode='r',encoding='gbk') print(f.readline())
f.close()
#运行结果:恭喜成功读到文件内容1 f = open('H:文件操作1.txt',mode='r',encoding='gbk') print(f.readline()) print(f.readline())
f.close()
#运行结果 恭喜成功读到文件内容1 恭喜成功读到文件内容2 f = open('H:文件操作1.txt',mode='r',encoding='gbk') print(f.readline()) print(f.readline()) print(f.readline())
f.close()
#运行结果 恭喜成功读到文件内容1 恭喜成功读到文件内容2 恭喜成功读到文件内容3
可以发现这样我们每次f.readline都只读取文本中的每行内容。另外前面讲过字符串是可以迭代的,也就是可以使用for循坏。而文本的实质就是存储的字符串,所以文件内容也是可以循坏迭代的,而每次循坏的元素就是每一行的内容:
f = open('H:文件操作1.txt',mode='r',encoding='gbk') for line in f: #line 对应f中每一行的内容 print(line)
f.close()
#运行结果: 恭喜成功读到文件内容1 恭喜成功读到文件内容2 恭喜成功读到文件内容3
细心的同学可以发现打印结果之间都空了一行,是因为文本中每行结尾是有个‘ ’换行符的,print本身也有也有换行符,所以打印出来导致了以上结果。这样我们每次加载到内存的文本内容都是固定一行,就不用担心内存问题了。
read.lines
read.lines模式是将文本的每一行作为列表的元素以列表的形式读取出来:
f = open('H:文件操作1.txt',mode='r',encoding='gbk') print(f.readlines())
f.close()
#运行结果: ['恭喜成功读到文件内容1 ', '恭喜成功读到文件内容2 ', '恭喜成功读到文件内容3 ', ' ']
大家可以发现每个元素的结尾都是 ,也验证了前面用readline()为什么会空格一行的原因
2、'W'读模式
w模式:文件不存在则创建,存在则先删除再创建,。什么意思呢,也就是说我们选择w模式打开文件时,如果文件不存在,那么系统则会按照你所输入的文件路径和文件名自动创建该文件,否则就先删除源文件再创建文件。
f = open('H:文件操作2.txt',mode='w',encoding='utf-8') f.write('创建文本成功')
f.close()
可以看到文本操作2本来是没有的,是通过w模式根据你输入的路径和文件名创建,f.write()则是添加你要写入文本的内容,内容只能是字符串。
现在文本操作2已经存在,我们运行以下程序会出现什么情况:
f = open('H:文件操作2.txt',mode='w',encoding='utf-8') f.write('创建文本又成功啦')
f.close()
运行结果:
可以看见用w模式创建文件时,如果原文件存在,则会先删除原文件然后创建同名文件,内容会重新写入。