本文目錄:
一、檔案指標移動
二、修改
#大前提:檔案內指標的移動是bytes為單位的,唯獨t模式下的read讀取內容個數是以字元為單位
#f.read(3)
#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)
#print(data.decode('utf-8'))
f.seek(指標移動的位元組數,模式控制): 控制檔案指標的移動模式控制:
0: 預設的模式,該模式代表指標移動的位元組數是以檔案開頭為參照的
1: 該模式代表指標移動的位元組數是以當前所在的位置為參照的1
2: 該模式代表指標移動的位元組數是以檔案末尾的位置為參照的
強調:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用
f.tell()檢視檔案指標當前距離檔案開頭的位置
#0模式詳解
#with open('a.txt',mode='rt',encoding='utf-8') as f:
#f.seek(4,0)
#print(f.tell())
#print(f.read())
#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'))
#with open('a.txt',mode='rt',encoding='utf-8') as f:
#f.seek(5,0)
#print(f.read())
#1模式詳解
#with open('a.txt',mode='rb') as f:
#f.seek(3,1)
#print(f.tell())
#f.seek(4,1)
#print(f.tell())
#print(f.read().decode('utf-8'))
#2模式詳解
#with open('a.txt',mode='rb') as f:
#f.seek(-9,2)
#data=f.read()
#print(data.decode('utf-8'))
#tail -f access.log
with open('
access.log
',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='')
須知一:硬碟空間無法修改,硬碟中的資料更新都是用新的內容覆蓋舊的內容
記憶體控制可以修改
with open('a.txt
','r+t
',encoding='
utf-8
') as f:
f.seek(4,0)
(f.tell())
f.write(
'我擦嘞
')
須知二:檔案對應的是硬碟空間,硬碟不能修改應為檔案本質也不能修改,
我們看到檔案的內容可以修改,是如何實現的呢?
大的的思路:將硬碟中檔案內容讀入記憶體,然後在記憶體中修改完畢後再覆蓋回硬碟
具體的實現方式分為兩種:
#1. 將檔案內容發一次性全部讀入記憶體,然後在記憶體中修改完畢後再覆蓋寫回原檔案
#優點: 在檔案修改過程中同乙份資料只有乙份
#缺點: 會過多地占用記憶體
#with open('db.txt',mode='rt',encoding='utf-8') as f:
#data=f.read()
#with open('db.txt',mode='wt',encoding='utf-8') as f:
#f.write(data.replace('kevin','sb'))
#2. 以讀的方式開啟原檔案,以寫的方式開啟乙個臨時檔案,一行行讀取原檔案內容,修改完後寫入臨時檔案...,刪掉原檔案,將臨時檔案重新命名原檔名
#優點: 不會占用過多的記憶體
#缺點: 在檔案修改過程中同乙份資料存了兩份
import
oswith open(
'db.txt
',mode='
rt',encoding='
utf-8
') as read_f,\
open(
'.db.txt.swap
',mode='
wt',encoding='
utf-8
') as wrife_f:
for line in
read_f:
wrife_f.write(line.replace('sb
','kevin'))
os.remove(
'db.txt')
os.rename(
'.db.txt.swap
','db.txt
')
Python文字操作 檔案指標
1.seek 跳到指定的檔案位置 coding utf 8 如果沒有這個檔案,新建乙個檔案,檔名為 myallfile.txt fileopen open d pythontext myallfile.txt r if name main file.seek 16,0 0檔案調到從開頭開始第十五個字...
Python 操作檔案
字元 含義 r 以唯讀方式開啟 預設 w 以只寫方式開啟,刪除原有檔案內容 如果檔案不存在,則建立該檔案並以只寫方式開啟 x 建立乙個新檔案,並以寫模式開啟這個檔案,如果檔案存在則會產生 fileexistserror 錯誤 a 以只寫檔案開啟乙個檔案,如果有原檔案則追加到檔案末尾 b 用二進位制模...
Python 操作檔案
今天,我們來學習python開啟,修改檔案的方法。先在專案資料夾下新建兩個檔案 text1.txt和text2.txt,在text2中寫入 i like python.換行 it is fun.換行 下面我們用這兩個檔案探索操作檔案的方法。如何在python中開啟乙個檔案物件呢?with open ...