a+ open python_python编程之文件操作

  • Post author:
  • Post category:python


f5e0319f0608234cf091e04a1e3ba221.gif

文件的读写在任何一门编程语言中,是非常重要的知识点。而python中,它对文件的操作非常简单,只需要使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了,但是根据打开模式的不同,能够执行的操作也会大有不同。通过open()函数打开文件操作完成后,要通过close()函数进行文件的关闭。

open()函数打开文件的常用格式如下,f为文件句柄:

f = open(文件名,mode='操作模式',encoding='编码格式')

完整的语法格式为:

f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

各参数说明如下:

file: 必需,文件路径(相对路径或者绝对路径)

mode: 可选,文件打开操作模式

buffering: 设置缓冲

encoding: 一般使用utf-8

errors: 报错级别

newline: 区分换行符

closefd: 传入的file参数类型

opener:用来实现自己定义打开文件方式

文件的常用操作模式有:

r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

r+:打开一个文件用于读写。文件指针将会放在文件的开头。

w+:打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

r+b:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

w+b:以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

a+b:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

文件对象:

文件对象使用open()函数来创建,即上述中的文件句柄f,以下列出文件对象常用的函数:

file.close():关闭文件。关闭后文件不能再进行读写操作。

file.read([size]):从文件读取指定的字节数,如果未给定或为负则读取所有。

file.write(str):将字符串写入文件,返回的是写入的字符长度。

file.flush():刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

file.seek(offset[, whence]):移动文件读取指针到指定位置,file.seek(0)表示让光标回到开头。

针对文件操作模式的实例分析:

1、r模式:首先在当前目录下创建一个test01.txt文件,文件内容如下:

文件的r只读操作!

创建r模式下的python代码如下:

#encoding:utf-8f=open("test01.txt",mode="r",encoding="UTF-8")s=f.read()print(s)f.close()

运行以上代码,结果如下:

b57c4f89a735c9f6c254d9c7271158bb.png

2、w模式:首先在当前目录下创建一个test_w_02.txt文件,文件内容如下:

好好学习,天天向上!

创建w模式下的python代码如下:

#encoding:UTF-8f=open("test_w_02.txt",mode="w",encoding="utf-8")str=f.write("欢迎关注浩道linux")      #清空原文件内容,再写新的内容f.flush()       #刷新文件f.close()

运行以上代码后,test_w_02.txt文件内容如下:

432163e778b1fd9f66fce5be50200932.png

3、a模式:首先在当前目录下创建一个test_a_03.txt文件,文件内容如下:

欢迎关注公众号:

创建a模式下的python代码如下:

#encoding:UTF-8f=open("test_a_03.txt",mode="a",encoding="utf-8")   #在原文件内容上追加内容f.write("浩道linux")f.flush()f.close()

运行以上代码,test_a_03.txt文件内容如下:

1d92f92b8f16267c11a9e0a3d14fd06f.png

4、rb模式:首先在当前目录下创建一个test_w_02.txt文件,文件内容如下:

欢迎关注浩道linux

创建rb模式下的python代码如下:

#encoding:UTF-8f=open("test_w_02.txt",mode="rb")   #读取的内容就是字节str_b=f.read()print(str_b)    #打印字节print(str_b.decode("utf-8"))    #解码,将字节还原成字符串f.close()

运行以上代码后,结果如下所示:

f74ea02835bbddb0848fd92e6642e190.png

5、wb模式:首先在当前目录下创建一个test_wb_05.txt文件,文件内容为空:

创建wb模式下的python代码如下:

#encoding:UTF-8f=open("test_wb_05.txt",mode="wb")f.write("浩道python".encode("utf-8"))f.close()

运行以上代码后,test_wb_05.txt文件内容为:

浩道python

这是由于解释器已经通过utf-8解码给我们看到的中文内容。

6、ab模式:跟上述a模式大同小异,只不过是由于处理二进制文件,这里不举例了。

7、r+模式:首先在当前目录下创建一个test_r+_07.txt文件,文件内容为:

关注浩道linux,

创建r+模式下的python文件如下:

#encoding:UTF-8#r+模式默认情况下光标在文件的开头,必须先读后写,光标才会从头到尾f=open("test_r+_07.txt",mode="r+",encoding="utf-8")str=f.read()    #先读print(str)f.write("你会进步的!")    #后写f.flush()f.close()

执行以上代码,结果如下所示:

a1cec2b0c083fada3a6d949db3068f1b.png

8、w+模式,a+模式基本不用了。这里不举例了。

9、rb+、wb+、ab+就是在r+、w+、a+操作上处理二进制文件,这里也不举例了。

本文关于python编程下的文件操作到此结束,大家掌握常用的文件操作模式,会操作相关的文件即可,希望大家通过练习,能够好好理解相关的文件操作。

往期内容回顾:

学网络,这些是你必备的东西

python编程之函数入门篇

python编程之循环语句

shell脚本编程经典实战题汇总之一

4146e9b3668c67a8da54ce91a9cb312a.png



版权声明:本文为weixin_39736934原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。