(九)Python:文件操作

一、读写文件

Python中使用open(filename,mode)执行打开文件操作。

  • filename:filename 变量是一个包含了你要访问的文件名称的字符串值。
  • mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

不同模式打开文件的完全列表:

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

这里写图片描述

二、文件对象方法

write(str)

# 打开一个文件
f = open("/text.txt", "w")
#使用write(str)进行写文件操作,它会返回写入的字符数
f.write( "人生苦短,我学Python。\n" )
# 关闭打开的文件
f.close()

read(size)
读取一个文件的内容可以使用file.read(size)方法,size表示你一次读取数据的大小,当size为负数或者没有指定使默认读取文件所有数据。

readline([size])
读取文件的一行,换行符为“\n”。如果file.readline()返回空字符串说明已经读取到最后一行。
指定size可以返回一行的一部分。

readlines([sizehint])
读取文件的所有行,并且将所有的行内容放在列表中。
如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。

f=open("text.txt","r")
str=f.readlines()
print(str)
f.close()

这里写图片描述

tell()
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
这里写图片描述

seek(offset, from_what)
如果我已经读取到第3个字节数的位置了,我还想从第一个字节再次读取我们可以使用seek()函数来改变文件对象所处的位置。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:

  • seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
  • seek(x,1) : 表示从当前位置往后移动x个字符
  • seek(-x,2):表示从文件的结尾往前移动x个字符

from_what 值为默认为0,即文件开头。

close()
同其他语言一样,Python中对文件操作完成后要close()文件对象,同时已经关闭的文件对象不能再吃=次使用。
这里写图片描述

我们可以使用with关键字来正确的关闭文件对象:
这里写图片描述

三、pickle 模块

Python的pickle模块可以帮我们将数据序列化(将数据保存到文件中)和反序列化(从文件中创建对象)。

  • 序列化:pickle.dump(obj, file, [,protocol])
    • protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
  • 发序列化:x = pickle.load(file)

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_25343557/article/details/80004067
今日推荐