python基礎 檔案操作

2022-07-23 09:42:09 字數 4580 閱讀 3819

檔案是作業系統提供給使用者操作複雜硬體的載體。開發者/管理員,應用程式需要永久儲存資料,就需要檔案這種載體。在python中操作檔案有兩種方式

方式一

f = open(r'

檔案路徑') # 向作業系統傳送請求,讀取檔案

print(f) # f是檔案物件

print(f.read()) # 列印讀出的內容 window作業系統預設以gbk模式解碼資料

f.close() # 關閉檔案

檔案路徑有兩種,一種是絕對路徑,如:d:\pycharm\education\課程\python基礎\04,檔案操作\a.txt。這就是一種絕對路徑,告訴系統檔案在**。另一種便是相對路徑,如:a.txt。這是相對路徑。相對路徑有要求,必須在執行檔案操作程式同級資料夾下,下級檔案和上級資料夾下都無法讀取。此為,在檔案前加『r'告訴系統這是檔案路徑,其中\n,\都是檔案路徑格式,沒有其他任何意義。當然不閒麻煩還可以:d://pycharm/education/課程/python基礎\04,檔案操作\a.txt。還可以這種方式寫檔案路徑。

在這種模式下讀取完檔案後,一定要關閉一下讀取檔案操作。f.close(),如果我們不關閉檔案,那麼系統不會立即關閉讀取檔案的請求,這樣會占用系統的資源。

方式二上下文操作。

with open(r'

檔案路徑『) as f:#或者

with open(r'

檔案路徑』)as f, open(r

'檔案路徑『)as f1:

同時開啟多個檔案

這種方式下開啟檔案,當我們回車寫指令對檔案操作。指令縮排,所有的程式指令就這這個檔案操作的子**塊。如果想要關閉。就和這with對齊,成為同級**,python程式就會關閉對這個檔案系統請求操作。

檔案操作"with open(r'檔案路徑', mode = 'rt', encoding = 'utf-8')「,其中」mode=' ' 」就是操作模式的選擇,encoding = '' 就是以什麼格式經行解碼。在mode 位置也可以不寫mode = ''  ,直接寫』r',python預設是t文字檔案。

在'r'唯讀模式下,如果檔案不存在,系統會報錯。讀檔案,當檔案內容讀完後,在進行讀操作只能讀到空白。

#

唯讀模式下的內建操作

f.readable() #

判讀是否可讀

f.read() #

讀取資訊

f.readline() #

對檔案單行資料讀取

f.readlines() #

讀取檔案所有行

在'w『只寫模式下,如果檔案不存在,那麼將會自動建立以該名命名的乙個檔案。寫檔案時,寫的資訊會覆蓋原來的資訊,是原來的資訊會丟失。

#

唯讀模式的內建操作

f.writable() #

判讀是否可寫

f.write() #

寫資料到檔案

f.writelines() #

對檔案單行資料讀取

在'a『追加寫模式下,不會覆蓋原來的資料,在文字檔案資訊末尾出追加,進行寫操作。

在這三種模式下還有可讀可寫模式'r+t', 'w+t' 和 'a+t』模式。

在讀模式下,使用f.read(1),在內建函式read()內可以放置int型引數。這個參數列讀取位置的引數。在'rt『模式下,存入的方式是以'utf-8',我們可以讀取文字檔案的第1個漢字或字母。這就是實現對檔案的選擇性讀取了。

#

a.txt檔案內容

商品 **

mac 8600iphone 8900聯想電腦 5200玩具 364

#檔案的第一字是商

#py檔案讀程式

with open(r'

a.txt

', '

rt', encoding='

utf-8

') as f:

rec = f.read(1) #

讀取第乙個字

print

(rec)

>>>商

#當read()引數改為2時

>>>商品

選擇型讀取還有以seek()的內建函式需要了解。寫f.seek(),我們使用ctrl鍵滑鼠放在seek上發現這裡需要放置兩個引數f.seek(offset, whence)。offset代表的是指標移動的位元組數,whence是代表參照什麼位置移動的。當whence = 0,表示在檔案開頭,並且在t和b模式下都可以使用。whence = 1,表示參照當前所在位置,必須在b模式下使用。whence = 2 ,表示參照末尾,也必須在b模式下使用。

#

a.txt文件,在gbk模式下存入的

meking在學習還是在把妹

#py檔案

with open(r'

a.txt

', 'rb'

) as f:

f.seek(6, 1) #

在第六個btes開始,每個英文本母佔1btes,中文字元占用2btes

rec = f.read(2).decode('

gbk') #

讀取2btes,用gbk編碼解碼

print

(rec)

>>>在

whence=2時,的讀取位置將在末尾。利用此功能可以做一檔案檢測的功能

#

py寫檔案

import

time

a = time.strftime('

%y-%m-%d %x')

print

(a)with open(r

'b.txt

', '

a', encoding='

utf-8

') as f:

f.write(

'%s meking在學習\n

'%a)

#檢測檔案是否寫入

with open(r'

b.txt

', 'rb'

) as f:

f.seek(0, 2) #

whence = 2模式。游標位置在b檔案末尾

while

true:

s = f.readline() #

讀取從之前末尾讀往後一行

if s: #

如果有寫入,便可以讀取內容

print(f.tell()) #

tell(),查游標位置

print("

新增的檔案內容:%s

" % s.decode('

utf-8

'))

檔案修改的兩種方式

'''

方式一1,先把原檔案內容讀出

2 ,對檔案內容經行更改

3,把更改好的新內容寫入,覆蓋原檔案

'''with open(r

'a.txt

','r

',encoding='

utf-8

') as f:

a =f.read()

#print(a)

b = a.replace('

女朋友', '玩具'

)

#print(b)

with open(r'

a.txt

', '

w', encoding='

utf-8

') as f1:

f1.write(b)

print('

over

')

'''

方式二1,同時操作兩個檔案

2,將原檔案的內容逐行讀出經行修改,寫入新檔案內

3,完成後,刪除原檔案,將新檔名改成原檔名

'''import

oswith open(r

'a.txt

', '

r', encoding='

utf-8

') as read_f,\

open(r

'a1.txt

', '

a', encoding='

utf-8

') as writre_f: #

原檔案讀,新檔案寫操作

a =read_f.read()

a = a.replace('

女朋友', '

玩具') #

修改檔案內容

for line in

a: new_line =line

writre_f.write(new_line)

#逐行寫入新檔案

os.remove(r'

a.txt

') #

刪除原檔案

os.replace('

a1.txt

', '

a.txt

') #

偷梁換柱,改成原檔案名字

Python基礎 檔案操作

使用 open 能夠開啟乙個檔案,open 的第乙個引數為檔名和路徑 my file.txt 第二個引數為將要以什麼方式開啟它,比如w為可寫方式.如果計算機沒有找到 my file.txt 這個檔案,w 方式能夠建立乙個新的檔案,並命名為 my file.txt 例項 text tthis is m...

python 基礎 檔案操作

開啟 在python,使用open函式,可以開啟乙個已經存在的檔案,或者建立乙個新檔案 open 檔名,訪問模式 示例如下 f open test.txt w 說明 訪問模式說明r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。...

python 基礎 檔案操作

開啟 在python,使用open函式,可以開啟乙個已經存在的檔案,或者建立乙個新檔案 open 檔名,訪問模式 示例如下 f open test.txt w 說明 訪問模式說明r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。...