码迷,mamicode.com
首页 > 移动开发 > 详细

文件操作part3 文件内指针的移动

时间:2018-09-21 15:20:11      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:read   个数   控制   div   end   不能   添加文件   while   byte   

大前提:文件内指针移动是以Bytes为单位的,唯独在唯独在t模式下的read读取内容的个数是以字符为单位的

t模式下读取文件:

with open(a.txt,mode=rt,encoding=utf-8) as f:
    data=f.read(3)#读取的是三个字符
    print(data)


with open(a.txt,mode=rb) as f:
    data=f.read(3)#读取的是三个Bytes
    print(data.decode(utf-8))
 f.seek(指针移动的字节数,模式控制): 控制文件指针的移动

  参数二:

      0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的

      1: 该模式代表指针移动的字节数是以当前所在的位置为参照的

      2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
 强调:其中0模式可以在t或者b模式下使用,而1跟2模式只能在b模式下使用

f.tell() 返回现在指针距离当前文件开头的位置

0模式的详解:
t模式下:
with open(a.txt,mode=rt,encoding=utf-8) as f:
    f.seek(4,0)#从开头移动了四个字节
    print(f.tell())
    print(f.read())

b模式下:

with open(a.txt,mode=rb) as f:
    # f.seek(4,0)
    f.seek(2,0)
    print(f.tell())
    print(f.read().decode(utf-8))#字节读取不完整,不能使用utf-8解码报错

 

1模式的详解(只能在b模式下)

with open(a.txt,mode=rb) as f:
    f.seek(3,1)#从当前位置移动三个字节(当前位置是文件开头)
    print(f.tell())
    f.seek(4,1)#(从上次指针位置移动4个字节)
    print(f.tell())
    print(f.read().decode(utf-8))
2模式详解
with open(a.txt,mode=rb) as f:
    f.seek(-9,2)#从文件末尾,向前移动9个字节
    data=f.read()
    print(data.decode(utf-8))

实现文件新写入文件监控;

run.py 添加文件内容

import time
with open(rb.txt,mode=a,encoding=utf-8) as f:
    f.write(%s 下雨了\n%time.strftime(%Y-%m-%d %X))

检测.py  检测

with open(rb.txt,mode=rb) as f:
    f.seek(0,2)#指针移动到最后
    while True:#读取指针后一行的内容
        line = f.readline()
        if len(line)==0:
            continue
        else:
            print(line.decode(utf-8),end=‘‘)
 

文件操作part3 文件内指针的移动

标签:read   个数   控制   div   end   不能   添加文件   while   byte   

原文地址:https://www.cnblogs.com/msj513/p/9686131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!