python文件读写指针

      当我们学会了用python打开文本文件并进行简单的读取和写入操作时,不知道我们有没有注意到python使用read()和write()函数读写文件的机制,这种机制与我们在打开文件时设置的模式有关。

        常用的打开文件的模式为:

        ‘r’:只读,在文件的开始处读取文件的内容

        ‘w’:只写,设置为w模式时,文件的内容将被清空,此时从文件的开始处写入新的内容

        ‘a’:只写,文件的内容保留,但从文件的最末尾处开始写入新的内容

        ‘r+’:可读写,读操作与‘r’一致,写操作时,从文件的当前指针开始写

        ‘w+’:可读写,文件的内容将被清空,此时从文件的开始处写入新的内容

        ‘a+’:可读写,文件的内容保留,但从文件的最末尾处开始写入新的内容

我们通过这些模式可以看出来,在你首次进行读写时,不同的模式其文件指针(开始读写处的位置)是不一样的。那么如何灵活的控制我们文件的指针使我们可以随心所欲的在指定位置处开始读写操作呢?答案是使用seek()函数和tell()函数。

    举个简单的例子,有个文件test.txt,内容是hello,world

    使用‘r+’模式打开文件:

#打开文件test.txt
file = open(r'C:\Users\esricc\Desktop\test.txt','r+')  
#查询当前的文件指针位置
pos = file.tell()

  此时,pos = 0 ,也就是说文件指针位于从文件的开始处,那么接下来的读写操作都会从文件的开始处进行。

 

#读取文件内容存入变量filecontent中
filecontent = file.read()
#执行读操作后,再次观察文件指针的位置
pos = file.tell()

 此时,pos =11,因为文件内容‘hello,world’刚好占了11个字节,那么此时文件指针就在d后,如果要进行写操作就行在hello,world后进行了。

file.write('!!!')
file.close()

   此时,我们打开文件,可以看到文件内容被修改为了hello,world!!!

  以上是文件指针的工作机制,有兴趣的同学可以试下w+和a+模式下文件的指针是如何工作的。

  


前面我们使用tell()函数观察了文件指针的位置,为了能够灵活的对文件进行读写操作,接下来我们使用seek()函数来指定文件指针的位置。

  seek(offset,whence) 方法有两个参数,whence为可选参数,给 offset 定义一个参考,表示要从哪个位置开始偏移;0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起;offset 指开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。

 还是以test.txt为例:

#打开文件
file = open(r'C:\Users\esricc\Desktop\test.txt','r+')
#读取文件内容
filecontent = file.read()
#设置文件指针在文件的开始处以在文件开始处写入新的内容
file.seek(0)
file.write('coder,'+filecontent)
file.close()

    在读取文件的内容后,文件指针就在hello,world!!!的末尾处,此时,我想在文件内容的开头处加入一个字符串'coder,' ,那么就需要将文件指针设置到文件的开始处,file.seek(0)实现了此功能。file.write('coder,'+filecontent)写入新的内容为coder,hello,world!!!。 此处需要注意的是,如果不是'coder,'+filecontent的话,那么文件的内容将会变为coder,world!!!

 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值