python文件操作

目录

open函数

路径

绝对路径

注意

相对路径

操作模式

r(只读模式)

rb(只读字节模式)

r+(读写模式) 

 w(写模式)

wb(写入二进制模式)  

w+(写读模式) 

 a(追加模式)

ab(追加二进制模式)

a+(追加读模式)  

模式总结

read(读取)

 例子:

readline(读取)

例子:

readlines(读取)

write(写)

 例子:

encode(编码转换)

 例子

flush(刷新)

close(关机)

文件操作扩展 

seek(移动光标) 

例子

tell(获取当时光标的位置)

例子 

truncate(删除光标后面的内容)

例子


open函数

表示获取目标文件的句柄,然后才能对文件进行读或写的操作

函数原型为

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):

file表示需要进行操作的文件路径

mode表示操作的模式,默认为r

encoding表示文件的编码,一般中文的使用UTF-8即可

其他参数一般使用默认即可。

路径

路径又分为了绝对路径和相对路径

绝对路径

绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。由一系列连续的目录组成,中间用斜线分隔,直到要指定的目录或文件,路径中的最后一个名称即为要指向的目录或文件。完整的描述文件位置的路径就是绝对路径。

注意

在程序中使用绝对路径的时候会因为\的问题不能被程序识别,在这个时候就需要使用\\表示\,前面的\表示转义。

相对路径

相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。简单说就是由当前的目录到你的目标文件的路径关系

操作模式

r(只读模式)

默认模式,表示只读操作

rb(只读字节模式)

在读取非文本文件, 比如说:音乐、照片、视频等二进制数据是,就需要用到rb,一般是用于存储和传输的

注意:使用rb模式时文件编码使用默认即可,不要再使用UTF-8了否则会报错。

r+(读写模式) 

对文件进行先读后写的操作,是使用频率最高的模式,如果文件不存在,则也会报错

 w(写模式)

可以对文件进行修改,如果路径下没有目标文件,则会建一个目标文件,在修改文件时,是对文件内原本的内容进行删除再添加的操作。每次进行写的操作后,记得一定要对文件进行刷新

wb(写入二进制模式)  

对文件写入二进制数据,与w模式类似,唯一的区别就是写入的数据编码不同。    

w+(写读模式) 

对文件进行先写在读操作,先将所有的内容清空,然后写入,最后读取,但是读取出来之后的内容是空的,所以并不常用,如果文本不存在,则会建一个文件

 a(追加模式)

在目标文件末尾进行写文件,而w模式则会对为文件进行覆盖操作,这是它们之间的不同之处,如果文件不存在就会创建一个文件

ab(追加二进制模式)

在目标文件末尾处添加二进制的数据

a+(追加读模式)  

a+模式下,不管是先读还是后读, 都是读不到数据的

模式总结

查看源图像

read(读取)

在使用open函数获取文件句柄后,即可使用此方法对文件进行读取操作。

格式:

句柄.rand(N)

 其中N表示可以指定读取多少个字符,默认表示全部读取

 例子:

以下的所有例子的默认在同级目录下建了一个名叫文本.txt,内容为hello world的文件

默认全部读取:

f=open('文本.txt',mode='r',encoding='UTF-8')#获取一个模式只读的句柄
a=f.read()      #通过获得的句柄对文件进行只读
print(a)        #输出结果为hello world
f.close()       #关闭文件

 读取指定数量字节:

f=open('文本.txt',mode='r',encoding='UTF-8')#获取一个模式只读的句柄
a=f.read(3)      #通过获得的句柄对文件进行只读3个字节操作
print(a)        #输出结果为hel
f.close()       #关闭文件

readline(读取)

 也是读取功能,但是与rand不同,它是每次读取中只会读取一行,并且每次使用它读取出来的数据里会自动加一个换行符

格式:

句柄.readline()

例子:

实现将文本.txt文件里的内容修改成whllo world,每个字母占一行

f=open('文本.txt',mode='r',encoding='UTF-8')#获取一个模式只读的句柄
a1=f.readline()      #读取第一行内容
print(a1)            #打印第一行
a2=f.readline()      #打印第二行
print(a2)            #打印第二行
f.close()           #关闭文件
'''
输出内容为:
h

e


'''

 读取后,第一行的内容为h和一个换行符,所以会占两行

readlines(读取)

也是读取功能,但是它是将每一行形成一个元素,放到一个列表中,将所有的内容全部读取出来,如果文件很大,占内存,导致系统崩盘

 格式:

句柄.readlines()

 例子

还是使用上一个例子中的文本

f=open('文本.txt',mode='r',encoding='UTF-8')#获取一个模式只读的句柄
a=f.readlines()      #通过获得的句柄对文件读取操作
print(a)        #输出结果为['h\n', 'e\n', 'l\n', 'l\n', 'o\n', '\n', 'w\n', 'o\n', 'r\n', 'l\n', 'd']
f.close()       #关闭文件

由于每行一个字母,使用读取后每个元素后面都会有一个换行符

write(写)

在获取文件句柄后,可以使用这个方法对文件进行修改

格式:

句柄.white('内容')

 例子:

使用内容为hello world的文本.txt文件。

f=open('文本.txt',mode='w',encoding='UTF-8')#获取一个模式只写的句柄
f.write('你好')      #通过获得的句柄对文件修改成你好
f.flush()           #刷新文件
f.close()           #关闭文件

运行后文件内容从原本的hello world改成了你好

encode(编码转换)

以指定的编码格式编码字符串,默认编码为 'utf-8'。不同的编码编码在不同的地方可能会发生乱码,使用就需要进行用于字符编码的操作

格式

'字符串'.encode(编码)

 例子

f=open('文本.txt',mode='wb')#获取一个模式只写二进制的句柄
f.write('python真容易'.encode('UTF-8'))      #通过获得的句柄对文件修改成你好
f.flush()           #刷新文件
f.close()           #关闭文件

flush(刷新)

刷新文件,在写文件的时候我们一定要养成一个写完文件就刷新的习惯

格式

句柄.flush()

在white方法中有此方法的例子,这里就不重复了 

close(关机)

表示关闭文件,释放内存,一定要养成使用完后关闭文件的习惯

格式

句柄.close()

在white方法和read方法中有此方法的例子,这里就不重复了  

文件操作扩展 

seek(移动光标) 

在输入内容时,可以通过光标位置控制输入内容的文字

格式:

句柄.seek(a,b)

 a表示偏移多少个字节,b表示光标从哪个位置开始偏移,默认是0, 表示开头,1表示当前位置,2表示结尾

例子

#初始文件内容为0123456789
f = open('文本.txt', mode='r+', encoding='UTF-8')
content = f.read()  # 第一次读取初始数据
print('初始内容为:', content, sep='')
f.seek(0)  # 将光标放置于开头
f.write('a')  # 进行修改
f.flush()  # 刷新
f.seek(0)  # 将光标放置于开头,读取后面的数据
content1 = f.read()  # 读取第一次修改之后的数据
print('第一次修改为:', content1, sep='')
f.seek(3, 0)  # 将光标放置于第3个字节位置
f.write('b')  # 第二次修改
f.flush()  # 刷新
f.seek(0)  # 将光标放置于开头,读取后面的数据
content2 = f.read()  # 读取第二次修改之后的数据
print('第二次修改为:', content2, sep='')
f.seek(0, 2)  # 将光标放置于结尾位置
f.write('c')  # 第三次修改
f.flush()  # 刷新
f.seek(0)  # 将光标放置于开头
content3 = f.read()  # 读取第三次修改后的数据
print('第三次修改为:', content3, sep='')
f.close()  # 关闭文件

 读取和修改都是对光标位置后的内容进行操作,所以在例子中每次修改刷新后都会将光标放置于开头,以便读取到全部内容。

tell(获取当时光标的位置)

格式:

句柄.tell()

例子 

# 文件内容还是0123456789
f = open('文本.txt', mode='r+', encoding='UTF-8')
f.seek(0)  # 将光标位置放置于开头
print(f.tell())  # 输出结果0
f.seek(4)  # 将光标偏移4个字节
print(f.tell())  # 输出结果4
f.seek(0, 2)  # 将光标放置于结尾
print(f.tell())  # 输出结果为10

truncate(删除光标后面的内容)

格式:

句柄.truncate()

例子

f = open('文本.txt', mode='r+', encoding='UTF-8')
f.seek(4)  # 将光标偏移4个字节
f.truncate()  # 输出光标后面的内容
f.seek(0)  # 将光标放置于开头
print(f.read())  # 输出内容为0123
f.close()  # 关闭文件

with语句

为了简化读取文件的操作,python提供了with语句的这种写法,即简单又安全。

当with语句执行完成,关闭文件的操作自动完成,即使有异常也会自动调用关闭文件操作。

格式是

with 文件 or 句柄:

其中文件一般使用open函数即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHYZBC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值