(十七)Python学习之文件操作

(十七)Python学习之文件操作

一、文件操作流程
1.打开文件,得到文件句柄并赋值给一个变量;
2.通过句柄对文件进行操作;
3.关闭文件。

二、打开文件的模式
1.文件句柄 = open(‘文件路径’, ‘模式’)
模式可以是以下方式以及他们之间的组合:‘r’, ‘w’, ‘a’ , ‘b’, ‘t’, ‘+’, ‘U’

(1)打开文件的模式有(默认为文本模式):

r :只读模式(默认模式,文件必须存在,不存在则抛出异常)
w:只写模式(不可读,不存在则创建,存在则清空内容)
a: 之追加写模式(不可读,不存在则创建,存在则只追加内容)

(2)对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式等)

rb:只读模式(默认模式,文件必须存在,不存在则抛出异常)
wb:只写模式(不可读,不存在则创建,存在则清空内容)
ab: 之追加写模式(不可读,不存在则创建,存在则只追加内容)
注意:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码;

(3)"+" 表示可以同时读写某个文件

r+:读写(可读,可写)
w+:写读(可读,可写)
a+:写读(可读,可写)

(4)了解部分

x:只写模式(不可读;不存在则创建,存在则报错)
x+:写读(可读,可写)
xb:以字节的方式只写模式(不可读;不存在则创建,存在则报错)

三、基本的操作文件的方法
1.read():读取所有内容,光标移动到文件末尾;

f = open('1', 'r', encoding="UTF-8")
data = f.read()
print(data)

在这里插入图片描述
在这里插入图片描述
2.readline():读取一行内容,光标移动到第二行首部;

f = open('1', 'r', encoding="UTF-8")
data1 = f.readline()
data2 = f.readline()
print(data1)
print(data2)

在这里插入图片描述
3.readlines():读取每一行内容;存放于列表中;

f = open('1', 'r', encoding="UTF-8")
data = f.readlines()
print(data)

在这里插入图片描述
4.write():对文件写,需要自己写换行符(针对文本模式的写,不需要字符转换;针对b模式的写,需要字符转换);

f = open('1', 'w', encoding="UTF-8")
f.write('HELLO\nhhh')
f.close()
f = open('1', 'wb')
f.write('HELLO\nhhh'.encode("UTF-8"))
f.close()

结果皆为如下:
在这里插入图片描述
5.writelines():以列表的形式对文件写,需要自己写换行符(针对文本模式的写,不需要字符转换;针对b模式的写,需要字符转换);

f = open('1', 'w', encoding="UTF-8")
f.writelines(['aaa\n', 'bbb\n', 'ccc\n'])
f.close()

在这里插入图片描述

f = open('1', 'wb')
f.writelines([bytes('aaa\n', encoding='utf-8'), 'bbb\n'.encode('utf-8')])
f.close()

在这里插入图片描述
6.readable():判断文件是否可读;
7.writable():判断文件是否可读;
8.closed:判断文件是否关闭;
9.encoding:返回文件文件打开使用的编码;如果文件打开模式为b,则没有该属性;
10.flush():立刻将文件内容从内存刷到硬盘;
11. name:返回文件的文件名;

四、文件内光标的移动
1.read(n):

(1)文件打开方式为文本模式时,代表读取n个字符;
(2)文件打开方式为b模式时,代表读取n个字节;

2.tell():返回光标所在的位置;
3.seek():控制光标的移动(0:绝对位置移动,1:相对位置移动,2:末尾计起移动)其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的;

f = open('1', 'rb')
ofs = 10
print(f.tell())
f.seek(ofs, 0)
print(f.tell())
f.seek(ofs, 1)
print(f.tell())
f.seek(ofs, 0)
print(f.tell())
f.seek(ofs, 2)
print(f.tell())

在这里插入图片描述
4.truncate():截断文件(文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果);

f = open('1', 'r+')
data = f.truncate(10)
print(data)
f.close()

执行前:
在这里插入图片描述
执行后:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38936626/article/details/86669745