python檔案操作 檔案指標移動 修改

2022-05-29 03:48:12 字數 2961 閱讀 6335

本文目錄:

一、檔案指標移動

二、修改

#

大前提:檔案內指標的移動是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)

print

(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 ...