Python---操作文件

本文深入讲解了Python中文件操作的基本模式,包括'r'、'w'、'a'、'x'、'b'、'+'等,并详细介绍了常用文件方法如read、write、seek、tell等的功能和使用场景,适合Python初学者和需要复习文件操作知识的开发者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     字符                                                                   含义
       'r'以只读方式打开(默认)
       'w'以只写方式打开,删除原有文件内容(如果文件不存在,则创建该文件并以只写方式打开)
       'x'创建一个新文件, 并以写模式打开这个文件,如果文件存在则会产生"FileExistsError"错误
       'a'以只写文件打开一个文件,如果有原文件则追加到文件末尾
       'b'用二进制模式打开
       't'文本文件模式打开 (默认)
       '+'为更新内容打开一个磁盘文件 (可读可写)
缺省模式是 'rt'
'w+b' 可以实现二进制随机读写,当打开文件时,文件内容将被清零
'r+b' 以二进制读和更新模式打开文件,打开文件时不会清空文件内容
'r+'  以文本模式读和更新模式打开文件,打开文件时不会清空文件内容

python 文件常用方法:

方法说明
F.read(size = -1)从一个文件流中最多读取size个字符
F.readline()读取一行数据, 如果到达文件尾则返回空行
F.readlines(max_chars=-1)返回每行字符串的列表,max_chars为最大字符(或字节)数
F.write(text)写一个字符串到文件流中,返回写入的字符数
F.writelines(lines)每行字符串的列表
F.flush()把写入文件对象的缓存内容写入到磁盘
F.close()关闭文件(关闭后文件不能再读写会发生ValueError错误)

二进制文件操作方法:

F.tell()返回当前文件流的绝对位置
F.seek(offset, whence=0)改变数据流的位置,返回新的绝对位置
F.readable()判断这个文件是否可读,可读返回True,否则返回False
F.writable()判断这个文件是否可写,可写返回True,否则返回False
F.seekable()返回这个文件对象是否支持随机定位
F.truncate(pos = None)剪掉 自pos位置之后的数据,返回新的文件长度(字节为单位)
# file = open("mynote.txt","rt")
with open("test.txt", 'rb') as file:
    # file.write(meta['body'])
    s = file.read()
    print s
print s

文件定位

# -*- coding:utf-8 -*-
with open("test.txt", "rb") as fr:
    position = fr.tell()
    print "当前文件位置是:", position      # 结果:当前文件位置是: 0
    str = fr.read(10)
    print "读取的字符串是:", str           # 结果:l love qia 
    position = fr.tell()
    print "当前文件位置是:", position      # 结果:当前文件位置是: 10
    # 把指针再次重新定位到文件开头。下面写法等同于:fr.seek(0, 0)
    fr.seek(0)
    position = fr.tell()
    print "当前文件位置是:", position      # 结果:当前文件位置是: 0

# 1.tell():返回当前文件流的绝对位置。获取文件指针的当前位置(值)。换句话说,下一次的读写会发生在文件开头这么多字节之后。返回当前文件指针在文件中的位置。
# 2.seek(offset,whence=0)
#       offset偏移量:大于0的数代表向文件末尾方向移动offset位。小于0的数代表向文件头方向移动offset位。
#       whence相对位置:
#           等于0:表示文件开头,代表从文件头部开始偏移。即将文件指针指向从文件的头部到 "偏移量"字节处。默认值为0。
#           等于1:表示当前位置,代表从当前位置开始偏移。即将文件指针指向从文件的当前位置,向后移动 "偏移量"字节。
#           等于2:表示文件结尾,代表从文件尾部开始偏移。即将文件指针指向从文件的尾部,向前移动 "偏移量"字节。
# 3.示例:f.seek(10,0)、f.seek(-10,2)、f.seek(5,1)
# 4.附加:f.tell()与f.seek()一般操作二进制文件
# 5.test.txt文件内容:l love qianqian more than yesterday          

清空文件并替换内容

with open('aaa.txt', "r+") as fr:
    read_data = fr.read()
    # 把文件定位到头部,没有这句的话,文件是定位到数据最后,truncate也是从这里删除,不起作用。
    fr.seek(0)
    fr.truncate()  # 清空文件内容
    fr.write(read_data.replace('qianqian', 'baobei'))
# 修改前test.txt文件内容:l love qianqian more than yesterday 
# 修改后test.txt文件内容:l love baobei more than yesterday

https://www.jb51.net/article/45956.htm

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值