官术网_书友最值得收藏!

1.3.2 文件處理

到目前為止,所有的程序都是從控制臺獲取輸入并將執(zhí)行結(jié)果輸出到控制臺的,實現(xiàn)了與用戶的交互。但控制臺上只能顯示有限的數(shù)據(jù),也無法反復(fù)從程序中生成數(shù)據(jù),一旦發(fā)生意外,所有工作成果將瞬間消失。文件處理在數(shù)據(jù)需要永久存儲到文件時發(fā)揮著重要作用,通過文件處理,可以讀取、寫入、創(chuàng)建、刪除和更改文件。

Python提供了內(nèi)置的文件對象,以及用于對文件、目錄進(jìn)行操作的內(nèi)置模塊,通過這些可以很方便地將數(shù)據(jù)保存到文件中。

1.文件路徑

在Windows上,書寫路徑時使用反斜線作為路徑分隔符。但在OS X和Linux上,使用正斜線作為路徑分隔符。如果想要程序運(yùn)行在所有操作系統(tǒng)上,在編寫程序時,就必須考慮到這兩種情況。

r/R表示原始字符串。所有的字符串都是直接按照字面的意思來使用的,沒有轉(zhuǎn)義特殊或不能輸出的字符。原始字符串第一個引號前有字母“r”(可以大寫),與普通字符串有著幾乎完全相同的語法。我們只需要在文件路徑字符串引號前加上r或R就可以輕松處理文件路徑帶來的問題了。

2.文件操作

Python中文件操作有很多種,常見的操作是對文件進(jìn)行讀取和寫入。文件必須在打開之后才能進(jìn)行操作,在操作結(jié)束之后,還應(yīng)該將其關(guān)閉。因此文件操作可以分為以下3步,每一步都需要借助對應(yīng)的函數(shù)實現(xiàn)。

●打開文件:使用內(nèi)置的open()函數(shù),該函數(shù)會返回一個文件對象。

●對已打開的文件進(jìn)行讀/寫操作:讀取文件內(nèi)容,可使用read()、readline()以及readlines()函數(shù);向文件中寫入內(nèi)容,可以使用write()函數(shù)。

●關(guān)閉文件:完成對文件的讀/寫操作之后,需要關(guān)閉文件,可以使用close()函數(shù)。

(1)打開文件

在Python中,要操作文件,首先需要創(chuàng)建或者打開指定的文件,并創(chuàng)建文件對象,而這些工作可以通過內(nèi)置的open()函數(shù)完成。

●'file_name.txt'是要打開文件的名稱。不僅可以指定文件名,還可以指定路徑(絕對路徑或相對路徑)。

●'r'是文件打開模式,表示以只讀的模式打開文件。open()支持更多的文件打開模式,常用的文件打開模式如表1-1所示。

表1-1 常用的文件打開模式

(2)讀取文件

Python提供了如下3種函數(shù)來實現(xiàn)讀取文件中數(shù)據(jù)的操作。

●read()函數(shù):逐個字節(jié)或者字符讀取文件中的內(nèi)容。

●readline()函數(shù):逐行讀取文件中的內(nèi)容。

●readlines()函數(shù):一次性讀取文件中的多行內(nèi)容。

下面通過readlines()函數(shù)讀取文件R1.txt,R1.txt文件內(nèi)容如下:

readlines()函數(shù)操作如下:

(3)寫入文件

寫入文件時,指定正確的文件打開模式非常重要,以免誤刪。

●w:打開文件進(jìn)行寫入。如果文件存在,則刪除其內(nèi)容。

●a:打開文件以添加數(shù)據(jù),數(shù)據(jù)添加到文件末尾。

如果文件不存在,則在這兩種模式下都會創(chuàng)建一個文件。以下函數(shù)用于寫入文件。

●write():將一行內(nèi)容寫入文件。

●writelines():允許將字符串列表作為參數(shù)發(fā)送到文件中。

下面通過write()函數(shù)將字符串寫入文件。

(4)關(guān)閉文件

前面在介紹文件操作時,一直強(qiáng)調(diào)打開的文件最后一定要關(guān)閉,否則會給程序的運(yùn)行造成意想不到的隱患。但是,即便使用close()函數(shù),如果在打開文件或文件操作過程中拋出了異常,則還是無法及時關(guān)閉文件。

為了更好地避免此類問題出現(xiàn),Python提供了with as語句用來操作上下文管理器(Context Manager),它能夠幫助我們自動分配并且釋放資源,保證文件自動關(guān)閉。

有時需要同時處理兩個文件,如將從一個文件中讀出的內(nèi)容再寫入另一個文件。在這種情況下,可以按如下方式打開兩個文件:

主站蜘蛛池模板: 麦盖提县| 卫辉市| 突泉县| 塘沽区| 南投市| 台江县| 道孚县| 水城县| 博兴县| 准格尔旗| 扎赉特旗| 固安县| 色达县| 青冈县| 赤城县| 久治县| 时尚| 常德市| 凉山| 正宁县| 扎兰屯市| 连江县| 南岸区| 沙坪坝区| 利辛县| 临沭县| 大邑县| 施秉县| 沾化县| 土默特左旗| 罗山县| 周至县| 兴义市| 旺苍县| 盱眙县| 托克托县| 辽源市| 嘉义县| 剑阁县| 永春县| 宁波市|