Python---文件操作

Posted Kingfan----来自湖南常德的野生程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python---文件操作相关的知识,希望对你有一定的参考价值。

一、文件—永久保存数据

  我们用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

细心的同学可以发现打印结果之间都空了一行,是因为文本中每行结尾是有个‘\\n’换行符的,print本身也有也有换行符,所以打印出来导致了以上结果。这样我们每次加载到内存的文本内容都是固定一行,就不用担心内存问题了。

read.lines

read.lines模式是将文本的每一行作为列表的元素以列表的形式读取出来:

f = open(\'H:\\文件操作1.txt\',mode=\'r\',encoding=\'gbk\')
print(f.readlines())
f.close()
#运行结果: [\'恭喜成功读到文件内容1\\n\', \'恭喜成功读到文件内容2\\n\', \'恭喜成功读到文件内容3\\n\', \'\\n\']

大家可以发现每个元素的结尾都是\\n,也验证了前面用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模式创建文件时,如果原文件存在,则会先删除原文件然后创建同名文件,内容会重新写入。

 

以上是关于Python---文件操作的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记:python3,代码片段(2017)

常用python日期日志获取内容循环的代码片段

VSCode自定义代码片段——git命令操作一个完整流程

使用 Python 代码片段编写 LaTeX 文档

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程