1. 程式人生 > >文件操作part3 文件內指針的移動

文件操作part3 文件內指針的移動

下使用 port code mod Coding while \n 字節數 bsp

大前提:文件內指針移動是以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 文件內指針的移動