Python 文件操作和管理

Python的文件对象不仅包括实际的磁盘文件,也可以是其他的存储和通信设备,如键盘等。

文件打开和关闭

open(file, mode , buffering, encoding, errors, newline, closefd, opener)

file = 'test.txt'
f = open(file,'w+',encoding = 'utf-8')
f.close # 打开的文件最后需要关闭

with open(file,'w+',encoding = 'utf-8') as f
  f.write('文本内容')
  # 使用 with as 时可以自动关闭

file 参数
file参数数据格式可以是字符串和整数,文件名可以是相对当前目录的路径,也可以是绝对路径表示;如果file是整数表示文件描述符,文件描述符指向一个已经打开的文件。

mode参数
mode设置文件打开模式,文件打开模式用字符串表示,最基本的文件打开模式如下表所示。

字符串说明
r只读模式(默认)
w写入模式,覆盖当前文件
x独占创建模式,如果文件不存在则创建并写入模式打开,存在则抛出异常
a追加模式,写入内容不覆盖
b二进制模式
t文本模式(默认)
+更新模式

b和t是文件类型模式,如果是二进制文件需要设置rb、wb、xb、ab;如果文本文件需要设置rt、wt、xt、at,由于t是默认模式,所以可以省略为r、w、x、a。
+必须与r、w、x或a组合使用,设置文件为读写模式,对于文本文件可以使用r+、w+、x+或a+;对于二进制文件可以使用rb+、wb+、xb+或ab+。
注意 r+、w+和a+区别。r+打开文件时如果文件不存在则抛出异常;w+打开文件时如果文件不存在则创建文件,文件存在则清除文件内容;a+类似于w+,打开文件时如果文件不存在则创建文件,文件存在则在文件末尾追加。

buffering参数
buffering是设置缓冲区策略,默认值为-1,当buffering=-1时系统会自动设置缓冲区,通常是4096或8192字节;当buffering=0时是关闭缓冲区,关闭缓冲区时数据直接写入到文件中,这种模式主要应用于二进制文件写入操作;当buffering>0时,buffering是设置缓冲区字节大小

encoding和errors参数
encoding用来指定打开文件时的文件编码,主要用于文本文件打开。errors参数用来指定当编码发生错误时如何处理。

newline参数
newline设置换行模式。

closefd和opener参数
这两个参数是在file参数为文件描述符时使用。closefd为True时,文件对象调用close()方法关闭文件同时也会关闭文件描述符所对应的文件;closefd为False时,文件对象调用close()方法关闭文件,但不会关闭文件描述符所对应的文件。
opener参数用于打开文件时执行一些加工操作,opener参数执行一个函数,该函数返回一个文件描述符。

文件读写

文本文件读写的单位是字符,而且字符是有编码的,二进制文件读写的单位是字节,不需要考虑编码的问题。读写主要方法如下:

函数名说明
read(size=-1)从文件中读取字符串,size限制读取最多字符数,size=-1没有限制读取全部内容。
readline(size=-1)读取到换行符或文件尾并返回单行字符串。如果已经到文件尾,则返回一个空字符串。size是限制读取的字符数,size=-1没有限制。
readlines(hint=-1)读取文件数据到一个字符串列表中,每一个行数据是列表的一个元素。hint是限制读取的行数,hint=-1没有限制。
write(s)将字符串s写入文件,并返回写入的字符数。
writelines(lines)向文件中写入一个列表。不添加行分隔符,因此通常为每一行末尾提供行分隔符。
flush()刷新写缓冲区,数据会写入到文件中。
file = 'test.txt'
with open(file,'r+',encoding = 'utf-8') as f:
    content = f.read()
    print(content)
    print(type(content))
    print(f.tell()) # 获得当前光标位置
    f.seek(0) # 设置当前光标位置
    content = f.readline() # 只读一行
    print(content)
    print(type(content))
    f.seek(0)
    content = f.readlines() # 全部读出来,用列表装
    print(content)
    print(type(content))

在这里插入图片描述
read() 全部读取,返回str,readline()只读一行,返回str,readlines全读,返回list。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

肆拾伍

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

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

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

打赏作者

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

抵扣说明:

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

余额充值