当我们python程序执行完毕后,所有存储在内存中的数据全部会丢失,如果需要将程序运行结果持久的保存下来,就需要通过文件来进行保存数据。
文件按照存储的种类可以分为:文本文件和二进制文件。
文件是以字符编码的方式进行存储;而二进制文件就是以二进制格式存储,将内存中的数据原封不动的存储到文件中,适用于非字符为主的数据,如图片、视频等是以二进制方式进行保存,如果用记事本打开这类文件,我们会看到乱码。
文件的操作主要包含:文件的创建、读取、写入、复制和删除等常用操作。
Python中文件创建,读取,写入和关闭主要通过open函数来实现。
1、创建一个文件
![307bcb9d3aff8f2a187a1033481a34d1.png](https://i-blog.csdnimg.cn/blog_migrate/07d011bad6c52607f9fc2b7bf1513e46.jpeg)
文件的创建
2、读取文件内容
![cce7e2920d1d1186df15db01791654e2.png](https://i-blog.csdnimg.cn/blog_migrate/7ec174d776891bb978cca63d7d09eb2b.jpeg)
文件的读取
如果一个文件超过4G,如果尝试一次全部加载,可能造成计算机瘫痪,因此如果文件太大,我们可以在文件对象的read方法中指定一次读取的字符串。
![5ba3bf8519cc6410d30a0a18d0256215.png](https://i-blog.csdnimg.cn/blog_migrate/19facb00cd11bc89fe294443e7b0ba13.jpeg)
文件对象的其他读取方法:readline()和readlines()
在我的电脑D盘有一个ayong.txt文件,我向文件写入内容如下,然后进行保存。
![60bc24ae2a6ceb5e2724b04b7d4485e7.png](https://i-blog.csdnimg.cn/blog_migrate/59520ca4b01bda61cab9ce3eb8b76e46.jpeg)
调用一次readline就读取一行内容,如下图所示:
![fd220512e1a575fec0686031466e99ce.png](https://i-blog.csdnimg.cn/blog_migrate/945ad3539ecaf2f91a37fda0923dfdce.jpeg)
调用readlines方法可一次读取所有内容并按行返回列表类型,也就是说返回的是列表类型,列表中的每个元素就是文件中的某一行。
![a1c0533151dfdeead70ff5bdafb4151f.png](https://i-blog.csdnimg.cn/blog_migrate/bb60041584abeb68de60a65d084544a7.jpeg)
3、 文件关闭
文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开文件数量也是有限的,通过调用文件对象的close方法关闭文件。
![8ff60d81a80b5ed25f0028c5c309687a.png](https://i-blog.csdnimg.cn/blog_migrate/188029c857abab7ba88538dd27f49940.jpeg)
如果Python读取文件出现乱码,可以设置指定的编码进行读取,例如读取gbk编码文件。
![42101a032a7df4da36e2761dd52788c1.png](https://i-blog.csdnimg.cn/blog_migrate/ebc8a5f9a610a3b7b56593528c5df31d.jpeg)
操作完文件都需要去关闭文件有点繁琐,Python引入了with语句来自动帮我们调用close()方法。
![c72d7e05d960c115e7ea1013b75204e2.png](https://i-blog.csdnimg.cn/blog_migrate/81d1c1098081e3c35199f1ffc7490837.jpeg)
4、 文件写入
向文件写入内容,我们可以使用"w"模式写入内容,也可以采用"a"模式写入。两者的主要区是:"w"模式会先清空原文件内容,然后在写入指定内容,而"a"模式则是在原文件内容的末尾进行追加内容。相同点在于检测到文件不存在,都会自动创建文件。
![6cbfb0f5cff4d0b1786e824826157865.png](https://i-blog.csdnimg.cn/blog_migrate/fa353df1508c11781e39e1b596fb450c.jpeg)
![29bbb1bc317d3f64a64efd7670499713.png](https://i-blog.csdnimg.cn/blog_migrate/5804446037fac9dec180d69dfa3bcc68.jpeg)
注意:在w模式下和a模式下只能进行写入操作,不能进行读取操作,如果你既要写入又要读取,可以在w或a模式后添加一个"+"号,即为"a+"或"w+模式"。示例如下:
![b28d9848b1f0ddf0d7f39e6c0f653493.png](https://i-blog.csdnimg.cn/blog_migrate/fe6257aef12fa3073bae01a1af26ed43.jpeg)
文件读取或写入是根据文件的游标指定位置开始操作,执行写操作后,游标会指向写入内容的末尾,此时如果你执行读取操作,会从文件末尾读取就什么也读不到,所有调用文件对象的seek方法使游标跳转到文件开头,参数0表示从文件开头的第0个字符开始操作。
5、 删除文件
删除文件,需要使用os模块中的remove方法实现文件的删除操作。
![c3445c5b074da20099797ecc1a010574.png](https://i-blog.csdnimg.cn/blog_migrate/e4656184838fd0bbb82acf299261468d.jpeg)
6、 复制一个文件
如果将文件复制一份到其它地方。示例代码如下:
![e4b4fc4d419696128ddfad185c3d4df8.png](https://i-blog.csdnimg.cn/blog_migrate/700f8dcfce21ae36cf9996be09d7b96f.jpeg)
7、 读取一个二进制文件
读取二进制文件,图片文件就是一个二进制形式文件,读取的时候将模式改为rb模式。示例代码如下:
![b080afc8006a740777065850d690a7fc.png](https://i-blog.csdnimg.cn/blog_migrate/c9971a231725572f64d8be47a0e7a680.jpeg)
以上是python常用的文件操作,老铁们喜欢的话,帮忙点个赞!有你们的支持,勇哥会更加努力!