04 Python檔案操作

2021-10-06 10:47:01 字數 4057 閱讀 6752

f=

open

("我的檔案.txt"

,"r"

,encoding=

"utf8"

)#開啟乙個檔案(讀模式)

f.close(

)#關閉檔案

解釋:

寫**過程中,很容易忘記關閉檔案,所以出現了with語句

with

open

("我的檔案.txt"

,"r"

,encoding=

"utf8")as

file

:#自動關閉檔案

data=

file

.read(

)#讀取檔案

print

(data)

解釋:

同時開啟多個檔案:

with

open

("123.txt"

,"w"

)as f1,

open

("456.txt"

,"w"

)as f2:

f1.write(

"hello 123.txt\n"

) f2.write(

"hello 456.txt\n"

)

什麼是游標?
作業系統使用游標來讀寫檔案

游標的位置影響讀寫的位置

常用模式
r	#讀模式

w #寫模式,會清空檔案

a #追加模式

r+讀寫模式:

根據游標位置讀寫

w+寫讀模式:

會清空檔案

根據游標位置讀寫

a+追加模式:

不會清空檔案

開啟檔案之後自動將游標置於最後,而游標位置只會影響讀操作

每一次追加都會將游標置於最後

rb、wb、ab……:

以bytes型別讀取檔案

示例:

下例中的讀寫模式為r (read讀模式)

f=

open

("我的檔案.txt"

,"r"

,encoding=

"utf8"

)

方法:

data =

file

.read(

)# 讀取檔案全部資訊(不建議,非常占用記憶體)

data =

file

.read(5)

# 讀取5個字元

示例:

with

open

("我的檔案.txt"

,"r"

,encoding=

"utf8")as

file

: data =

file

.read(

)# 讀取檔案全部資訊(不建議,非常占用記憶體)

print

(data)

# 輸出檔案內容

示例:

with

open

("我的檔案.txt"

,"w"

,encoding=

"utf8")as

file

:file

.write(

"hello world"

)# 寫操作(只是寫到緩衝區中)

file

.flush(

)# 將緩衝區裡的內容寫到檔案中

解釋:

w模式會清空檔案

write(

)函式會將資料寫入緩衝區,而不是檔案中

flush(

)函式和關閉檔案時,python會將緩衝區中的資料寫入檔案。

為什麼不直接寫入檔案?

檔案儲存在磁碟中,如果每一次寫入檔案都要訪問一次磁碟,就會頻繁請求磁碟,導致磁碟壓力過大。

with

open

("我的檔案.txt"

,"r"

,encoding=

"utf8")as

file

: data=

file

.readline(

)#輸出當前行(游標會移動到下一行)

data=

file

.readlines(

)#返回乙個列表,元素為各行(不使用迭代器)

location=

file

.tell(

)#返回當前游標位置。按位元組返回(乙個中文佔3個位元組)

file

.seek(5)

#設定游標位置

num=

file

.fileno(

)#返回檔案控制代碼,唯一標識該檔案物件

#兩個程式對同乙個檔案同時呼叫,得到的控制代碼相同

print

(num)

重點:

truncate()截斷

num=

file

.truncate(

)#截斷,刪除游標後所有字元,返回游標位置

file

.truncate(5)

#保留檔案開頭5個字元,剩下的刪除

示例:

with

open

("我的檔案.txt"

,"w"

,encoding=

"utf8")as

file

:file

.write(

"1234567890"

)file

.flush(

)file

.seek(5)

num=

file

.truncate(

)#檔案內容為12345

print

(num)

#結果為5

with

open

(「我的檔案.txt」,「r」,encoding=「utf8」)

asfile

:for i in

file

:print

(i)# 使用生成器,不占用記憶體(所以不要使用readlines()方法)

直譯器:

如何將變數值寫入檔案中?

將變數轉換為字串,再寫入檔案

讀取檔案後,再將字串轉換為原型別

方法1:eval方式
eval函式可以將字串型別的資料轉換為原來的型別。

如:將字串''轉換為字典

示例:

a=}a=

str(a)

#將a強制轉換成字串(就可以方便寫入檔案中了)

print

(type

(a))

#輸出:

a=eval

(a)#讀取檔案後,將a轉換回原來的型別

print

(type

(a))

#輸出:

方法2:json方式
import jsona=}

data=json.dumps(a)

#轉換成json格式 (str型別)

data=json.loads(data)

#轉回原格式

解釋:

方法3:pickle方式

import picklea=}

data=pickle.dumps(a)

#轉換成pickle格式 (str型別)

data=pickle.loads(data)

#轉回原格式

解釋:

04 Python中檔案流的關閉

目錄 close 關閉檔案流 with語句 上下文管理器 由於檔案底層是由作業系統控制,所以我們開啟的檔案物件必須顯式呼叫 close 方法 關閉檔案物件。當呼叫 close 方法時,首先會把緩衝區資料寫入檔案 也可以直接呼叫 flush 方法 再關閉檔案,釋放檔案物件。為了確保開啟的檔案物件正常關...

04 Python之檔案 異常和模組

1 掌握外部檔案讀取和儲存各類方法。2 掌握異常的處理辦法。3 掌握外部模組匯入和呼叫的方法。實際應用中,我們絕大數的資料都是通過檔案的互動完成的。with open 檔案路徑 開啟模式 encoding 操作檔案的字元編碼 as f 對檔案進行相應的讀寫操作 with open e ipthon ...

04 python條件控制語句

語法 if 條件表示式 weight 180if weight 160 print 你體重有點超標了 print 你該 了 a input 請輸入您的密碼 語法 input語句 a int input 請輸入您的密碼 if a 123456 print 這是高手 語法 if else語句 b int...