Python檔案讀取操作和異常處理

2021-10-06 03:26:38 字數 4689 閱讀 7134

檔案的操作

異常處理

什麼是檔案呢?
檔案是資料的抽象和集合

檔案是儲存在輔助儲存器上的資料序列

檔案是儲存的一種

檔案有哪些型別呢?
本質上所有檔案以二進位制儲存,不過又可以分為文字檔案和二進位制檔案

文字檔案時由單一特定編碼組成,如utf-8編碼

用於txt、py檔案

首先,想要操作檔案必須了解檔案的操作步驟,明白檔案操作的流程。

那麼檔案操作有哪幾個步驟呢?

檔案處理可以分為三大步:

檔案的開啟

檔案的具體操作

檔案的關閉

檔案開啟有兩種方式:

直接採用open(檔名稱)開啟

filename =

open

('test1.txt'

)#注意:檔名稱可以是檔案相對與當前程式的路徑,稱為相對路徑;

#也可以是檔案相對於電腦的路徑,稱為絕對路徑。

採用with… as… 開啟

filename =

'test1'

with

open

(filename)

as f:

#檔案操作**

檔案開啟後必須關閉檔案。不過在python解析器中,當程式關後會自動關閉檔案。

檔案關閉語法 變數名.close()

filename =

open

('test1.txt'

)#檔案操作**

filename.close(

)

需要注意的是,採用with…as…方式開啟的檔案就不用我們在寫關閉檔案的**。with…as…會自動在檔案操作**執行完成後關閉檔案。

檔案操作分為:讀檔案、寫檔案。

讀檔案有三種操作方式,分別是:

file.read(size)

讀入全部內容,預設size=-1,如果size=n則讀入前size長度

file.readline(size)

讀入一行內容,預設size=-1,如果給出引數,則讀入該行前size長度的內容

file.readlines(hint)

讀入檔案所有行,以每行為元素形成列表,預設hibt=-1,如果給出引數,則讀入前hint行

寫檔案有兩種操作方式外加一種輔助操作:

file.write(s)

向檔案協議乙個字串或位元組流

f.write(

'中國是乙個偉大的國家!'

)

file.writeline(lines)

將乙個元素全位字串的列表寫入檔案,字串拼接後寫入

ls =

['中國'

,'法國'

,'美國'

]f.write(ls)

#中國法國美國

file.seek(offset)

改變當前檔案操作指標的位置,offset含義如下:

0-檔案開頭;1-當前位置;2-檔案結尾

f.seel(0)

#回到檔案開頭

f.seel(1)

#檔案當前位置

f.seel(2)

#回到檔案結尾

fo = opne(

'test1.txt'

,'w+'

)ls =

['中國'

,'法國'

,'美國'

]fo.writelines(ls)

fo.seek(0)

for line in fo:

print

(line)

fo.close(

)

檔案開啟模式有七種:

'r' 唯讀模式,預設值,如果訪問到檔案不存在,則返回filenotfounderror一異常

'w'覆蓋寫模式,檔案不存在則建立檔案,如果檔案存在,則完全覆蓋

'x'建立寫模式,檔案不存在則建立檔案,存在則返回fileexistserror

'a'追加寫模式,檔案不存在則建立檔案,檔案存在則在檔案最後追加內容

'b'以二進位制形式開啟檔案

't'以文字形式開啟檔案 預設模式

'+'與r/w/a/一同使用,在與原功能上增加讀寫功能
filename =

open

('test1.txt'

)#預設使用文字形式和唯讀模式開啟檔案

filename =

open

('test1.txt'

,'rt'

)#文字制度模式開啟檔案

filename =

open

('test1.txt'

,'w'

)#文字形式,覆蓋寫模式開啟問及那

filename =

open

('test1.txt'

,'a+'

)#文字形式,追加寫模式+讀檔案

filename =

open

('test1.txt'

,'x'

)#文字形式、建立寫模式

filename =

open

('test1.txt'

,'b'

)#二進位制形式,唯讀模式

filename =

open

('test1.txt'

,'wb'

)#二進位制形式,覆蓋寫模式

filename.close(

)

方法一:

fname =

input

('請輸入要開啟檔案的名稱:'

)fo =

open

(fname,

'r')

txt = fo.read(

)#對全文本txt進行處理

fo.close(

)# 一次讀入,統一處理,文字檔案內容大消耗大

方法二:

fname =

input

('請輸入要開啟檔案的名稱:'

)fo =

open

(fname,

'r')

txt = fo.read(2)

while txt !='':

#對txt進行處理

txt = fo.read(2)

fo.close(

)# 分階段,按數量讀入,逐步處理 處理大檔案更加可行有效

什麼是異常呢?
在程式執行過程中,不可避免的出現一些錯誤 例如用沒賦值的變數等

首先我們要明白,

程式執行時出現異常、目的不是終止程式

python是希望出現異常時,我們可以編寫**來對異常進行處理

當在函式**現異常時,如果在函式中處理了異常,則不會在繼續傳播

如果函式中沒有處理,則異常會像函式掉用傳播

如果函式點用處處理了異常則不會傳播

如果沒有處理則會繼續傳播

知道傳遞到全域性作用域(主模組)如果依然沒有處理,則程式會終止

deffn(

):print

('hello fn'

)print(10

/0)def

fn2():

print

('hello fn2'

) fn(

)def

fn3():

print

('hello fn3'

) fn2(

)

異常的處理可以使用如下語法:

try

:#可能出現異常的**塊

except

:#出現異常後執行的**塊

finally

:#管有沒有異常都會執行的**塊

print

('異常出現前'

)try

:print

(a)print(10

/0)except exception as e:

#except後面如果跟異常物件則預設捕獲所有異常

#由於exception是所有異常物件的父物件所以except後面跟exception捕獲所有異常

print

(e,type

(e))

else

:print

('yi'

)finally

:print

('無論是否出現異常,finally都會執行'

)

python檔案操作和異常

python檔案的操作和異常 toc 這兩個月複習考研的同時,在github上斷斷續續的跟著駱先生 jackfrued 在我關注裡有 學習了一段時間的python,由於是自學所以經常會遇到一些容易卡死的問題,這篇文章我就簡單的分享一下在檔案及檔案異常我遇到的問題。函式語法 open file uni...

python基礎之檔案操作和異常處理

讀取整個檔案 讀取檔案先要建立乙個檔案,在程式的同一目錄下。greet.txt hello world hello world hello world hello world with open greet.txt as file object contents file object.read p...

詳解python檔案的操作和異常的處理

目錄 格式 f open 檔案 w 或者f open 檔案 r 格式 f open 檔案 w 或者f open 檔案 r 物件 open 檔案 r 變數 物件.read print 變數 如果用open開啟檔案時,如果使用的 r 那麼可以省略,即只寫 open test.txt 如果沒有檔案,開啟報...