1. 程式人生 > >控制檔案內指標移動——打day10

控制檔案內指標移動——打day10

強調:只有t模式下read(n),n代表字元個數,除此以外都是以位元組為單位
  with open('a.txt',mode='rt',encoding='utf-8')as f:
  res=f.read(4)#列印後面的字元
  print(res)
  結果:你好啊h

with open('a.txt',mode='rb')as f:
res=f.read(3)
peint(res.decode('utf-8))
結果:你

with open('a.txt',mode='at',encoding='utf-8') as f:
f.truncate(3)
只保留 truncate (3)之前的資料,之後的都刪除掉,只能以字元控制

f.seek():指標移動是以位元組為單位的
三種模式:
只有0模式既可以在t下用也可以在b下用,而1、2兩種模式只能在b模式下使用
0(預設的):參照檔案開頭
with open('a.txt',mode='rt',encoding='utf-8')as f:
f.seek(3,0)
print(f.tell())#檢視檔案指標當前所在的位置
print(f.read())
結果:

3
好啊hello

1: 參照指標當前所在位置
with open('a.txt',mode='rb') as f:
f.read(2)
f.seek(4,1)
print(f.tell())#檢視檔案指標當前所在的位置
print(f.read().decode('utf-8'))
結果:

6
啊hello

2: 參照檔案末尾
with open('a.txt',mode='rb') as f:
f.seek(-5,2)
print(f.tell())#檢視檔案指標當前所在的位置
print(f.read().decode('utf-8'))
結果:

9
hello


後臺監視小程式
import time#呼叫時間模組

with open('access.log',mode='rb') as f:
f.seek(0,2)#跳到檔案末尾
while True:
line=f.readline()#每次讀取一行
if len(line) == 0:#如果line的長度為0的話
time.sleep(0.1)#停0.1秒


else:
print(line.decode('utf-8'),end='')#否者把他的內容打印出來