python 檔案I O與異常處理

2021-09-07 20:46:11 字數 3773 閱讀 7958

open函式

file object = open(file_name [, access_mode][, buffering])
各個引數的細節如下:

1、file_name:file_name變數是乙個包含了你要訪問的檔名稱的字串值。

2、access_mode:access_mode決定了開啟檔案的模式:唯讀,寫入,追加等。所有可取值見如下的完全列表。這個引數是非強制的,預設檔案訪問模式為唯讀(r)。

3、buffering:如果buffering的值被設為0,就不會有寄存。如果buffering的值取1,訪問檔案時會寄存行。如果將buffering的值設為大於1的整數,表明了這就是的寄存區的緩衝大小。如果取負值,寄存區的緩衝大小則為系統預設。

不同模式開啟檔案的完全列表:

模式 描述

r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。

rb 以二進位制格式開啟乙個檔案用於唯讀。檔案指標將會放在檔案的開頭。這是預設模式。

r+ 開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

rb+ 以二進位制格式開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

w 開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

wb 以二進位制格式開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

w+ 開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

wb+ 以二進位制格式開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

a 開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

ab 以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

a+ 開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。

ab+ 以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

close函式

file物件的close()方法重新整理緩衝區裡任何還沒寫入的資訊,並關閉該檔案,這之後便不能再進行寫入。當乙個檔案物件的引用被重新指定給另乙個檔案時,python會關閉之前的檔案。語法為:

fileobject.close()
# 開啟乙個檔案

fo = open("foo.txt", "wb")

print "name of the file: ", fo.name

# 關閉開啟的檔案

fo.close()

file物件的屬性

乙個檔案被開啟後,你有乙個file物件,你可以得到有關該檔案的各種資訊。以下是和file物件相關的所有屬性的列表:

屬性 描述

file.closed 返回true如果檔案已被關閉,否則返回false。

file.mode 返回被開啟檔案的訪問模式。

file.name 返回檔案的名稱。

file.softspace 如果用print輸出後,必須跟乙個空格符,則返回false。否則返回true。

# 開啟乙個檔案

fo = open("foo.txt", "wb")

print "name of the file: ", fo.name

print "closed or not : ", fo.closed

print "opening mode : ", fo.mode

print "softspace flag : ", fo.softspace

read函式

read()方法從乙個開啟的檔案中讀取乙個字串。語法:

fileobject.read([count])
在這裡,被傳遞的引數是要從已開啟檔案中讀取的位元組計數。該方法從檔案的開頭開始讀入,如果沒有傳入count,它會嘗試盡可能多地讀取更多的內容,很可能是直到檔案的末尾。

# 開啟乙個檔案

fo = open("/tmp/foo.txt", "r+")

str = fo.read(10);

print "read string is : ", str

# 關閉開啟的檔案

fo.close()

write函式

write()方法可將任何字串寫入乙個開啟的檔案。write()方法不在字串的結尾不新增換行符('\n')。語法為:

fileobject.write(string)
在這裡,被傳遞的引數是要寫入到已開啟檔案的內容。

# 開啟乙個檔案

fo = open("/tmp/foo.txt", "wb")

fo.write( "python is a great language.\nyeah its great!!\n");

# 關閉開啟的檔案

fo.close()

注意檔案的開啟與關閉是成對出現的

try/except

捕捉異常可以使用try/except語句。try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常資訊並處理。如果你不想在異常發生時結束你的程式,只需在try裡捕獲它。語法:

try:

《語句》 #執行別的**

except 《名字》:

《語句》 #如果在try部份引發了'name'異常

except 《名字》,《資料》:

《語句》 #如果引發了'name'異常,獲得附加的資料

else:

《語句》 #如果沒有異常發生

如下面例子所示

try:

fh = open("testfile", "w")

fh.write("this is my test file for exception handling!!")

except ioerror:

print "error: can\'t find file or read data"

else:

print "written content in the file successfully"

fh.close()

try-finally

try-finally 語句無論是否發生異常都將執行最後的**。語法為:

try:

《語句》

finally:

《語句》 #退出try時總會執行

raise

注意:你可以使用except語句或者finally語句,但是兩者不能同時使用。else語句也不能與finally語句同時使用。例如:

try:

fh = open("testfile", "w")

fh.write("this is my test file for exception handling!!")

finally:

print "error: can\'t find file or read data"

Python檔案與異常處理

使用python的bif build in function open 進行檔案讀寫操作 1.開啟檔案 data open file name,w 讀取模式有很多種,主要有 w 寫入 r 唯讀 a 在尾部新增,w 可讀可寫,不存在新建,r 可讀可寫,不存在報錯 a 可讀可寫,不存在建立 2.操作檔案...

Python學習筆記 檔案與異常處理)

with open r d a.txt as file project contents file project.read print contents 函式open 接受乙個引數 要開啟的檔案的名稱 關鍵字with在不再需要訪問檔案後將其關閉 windows在路徑名中既接受斜線 也接受反斜線 檔...

IO之異常處理

在使用io流時,會遇到很多方法會丟擲異常。對於這些異常,我們不應該簡單的將其丟擲,而是應該進行一些處理。public class test 這個簡單的程式中的三行 用於將一句字串寫入檔案中然後關閉資源。但是這三句話都會丟擲異常。所以將這三行 放入try catch 中。因為這三行 有緊密的聯絡,所以...