open() 方法

成都創(chuàng)新互聯(lián)主營青島網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,青島h5微信小程序定制開發(fā)搭建,青島網(wǎng)站營銷推廣歡迎青島等地區(qū)企業(yè)咨詢
Python open() 方法用于打開一個文件,并返回文件對象,在對文件進(jìn)行處理過程都需要使用到這個函數(shù),如果該文件無法被打開,會拋出 OSError。
注意:使用 open() 方法一定要保證關(guān)閉文件對象,即調(diào)用 close() 方法。
open() 函數(shù)常用形式是接收兩個參數(shù):文件名(file)和模式(mode)。
語法格式如下
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數(shù)說明:
file: 必需,文件路徑(相對或者絕對路徑)。
mode: 可選,文件打開模式
buffering: 設(shè)置緩沖
encoding: 編碼方式一般使用utf8
errors: 報(bào)錯級別
newline: 區(qū)分換行符
closefd: 傳入的file參數(shù)類型
操作系統(tǒng)一般不允許程序直接操作磁盤文件的,文件在磁盤上的讀寫都是由操作系統(tǒng)提供的,文件操作包括創(chuàng)建、刪除、修改權(quán)限、讀取、寫入等。要想實(shí)現(xiàn)對文件的操作就需要請求操作系統(tǒng)打開一個文件對象,然后通過操作系統(tǒng)提供的接口來實(shí)現(xiàn)對文件讀寫的相關(guān)操作。讀寫文件是最常見的 I/O 操作,Python內(nèi)置相關(guān)API可以幫助我們快速的實(shí)現(xiàn)文件讀寫操作。
文件對象
Python內(nèi)置的 open() 函數(shù)可以用于打開指定文件 ,該函數(shù)會返回一個文件對象(該對象包含了當(dāng)前文件擁有的屬性信息,相當(dāng)于文件句柄)。參數(shù)file為要創(chuàng)建或打開文件的文件名稱,參數(shù)mode用于指定文件的打開模式(可選),參數(shù)buffering用于指定對文件做讀寫操作時是否使用緩沖區(qū)。在打開文件之后就可調(diào)用文件對象的屬性和方法,完成對文件的讀/寫操作之后最后需要關(guān)閉該文件,通過文件對象的close() 函數(shù)來實(shí)現(xiàn)即可。
打開模式
文件打開是可以指定其打開的模式,該參數(shù)通過mode來指定【默認(rèn)模式為只讀(r)】。選擇不同的打開模式?jīng)Q定了后續(xù)可以對文件進(jìn)行操作,如果使用 r 模式打開的文件則只能讀取文件而無法修改文件內(nèi)容。open()提供了多種打開模式,下面列出了對應(yīng)的打開模式和說明:
在磁盤上讀寫文件之前,必須先打開這個文件。打開文件就需要提供文件的路徑。
在與Python程序同一個目錄下,我們有一個名為 pi.txt 的文件,它的內(nèi)容如下:
現(xiàn)在使用Python來打開和關(guān)閉它:
執(zhí)行此程序不會有任何輸出,這表示著打開和關(guān)閉文件都得到了正確執(zhí)行。
可以看到,使用 open() 函數(shù)打開文件,參數(shù)為文件名(或文件路徑);該函數(shù)會返回一個文件句柄,文件句柄并不會實(shí)際保存文件的內(nèi)容,而是代表著一種操作,在上面的例子中,文件句柄被賦值給變量 fhand 。
打開文件后,程序具有讀(默認(rèn))該文件的權(quán)限。
最后,使用文件句柄的 close() 方法關(guān)閉文件。這非常重要,因?yàn)槭褂猛甓鴽]有關(guān)閉的文件會占用內(nèi)存或造成安全問題。
如果Python找不到該文件,則會返回錯誤,比如下面這樣:
Python提示我們沒有相應(yīng)的文件或者目錄: 'pii.txt'。
打開文件后就可以對文件進(jìn)行操作:
fhand.read() 方法將文件內(nèi)容作為一個字符串返回。
文件中的每一行末尾使用換行符 \n 表示換行,例子中方法 rstrip() 去掉文本中的換行符,然后輸出。
程序的運(yùn)行效果如下:
如果在文件關(guān)閉之前程序發(fā)生BUG意外退出,則文件不會關(guān)閉,為了避免此類事件的發(fā)生,可以使用 with 語句:
with 語句的特點(diǎn)是即便在操作文件時發(fā)生錯誤,文件也會自動被清理。
fhand.read() 雖然可以讀取文本內(nèi)容,但是當(dāng)我們想要逐行處理文件內(nèi)容,或者文件很大而無法一次性加載進(jìn)內(nèi)存的時候,就不適用了。
可以使用 for 語句逐行處理文件內(nèi)容:
本程序中將文件名保存在變量 filename 中。
打開文件后,使用 for 語句按行讀取文件內(nèi)容。例子中,每次循環(huán)依次取一行文本以字符串的格式保存在變量 line 中,每次循環(huán)中變量 count 自增1。
這個程序的作用是,打開程序所在目錄的 when_old.txt 文件,然后統(tǒng)計(jì)行數(shù),并輸出結(jié)果。
when_old.txt 文件的內(nèi)容是:
可以使用其他方法操作字符串 line :
程序?qū)⒁?'And' 開頭的行打印出來。
打開文件后,默認(rèn)的權(quán)限是讀(r),如果要寫文件,則需要使用寫(w)或者追加(a)權(quán)限。
w權(quán)限,打開一個文件用于寫入。如果該文件存在,則覆蓋該文件;如果該文件不存在,則創(chuàng)建該文件。
a權(quán)限,打開一個文件用于追加。如果該文件存在,在文件末尾追加;如果該文件不存在,則創(chuàng)建該文件。
下面是一個使用w權(quán)限打開文件的例子:
例子中使用w權(quán)限打開該文件,并寫入兩行。(如果該文件存在,則內(nèi)容會被覆蓋)
fhand.write() 不會自動添加換行符,所以如果需要換行,需在末尾添加 \n 。
下面我們寫一個統(tǒng)計(jì)文件中詞頻的程序。
它會統(tǒng)計(jì)文件中各個詞的出現(xiàn)的次數(shù),然后由高到低顯示出前5個詞。
首先我們完成打開和關(guān)閉文件的程序內(nèi)容:
在例子中,由用戶輸入文件名,并且使用異常捕獲以處理文件打開時的錯誤。
下面對內(nèi)容進(jìn)行統(tǒng)計(jì):
這個程序:
如此,我們就在字典中存放了 單詞:次數(shù) 的鍵值對。
由于字典不能保存順序,所以不能對其進(jìn)行排序。為此,將每個鍵值對都添加到一個列表中:
在列表 word_list 中,每一項(xiàng)都是一個元組,每個元組第一個值是單詞出現(xiàn)的次數(shù),第二個值是單詞內(nèi)容。
對其進(jìn)行逆向(由大到小)排序:
打印最終結(jié)果:
整個程序如下:
下面是程序運(yùn)行結(jié)果的示例:
open(filepath) :打開文件
open(filepath,'r') :打開方式,默認(rèn)是讀取
open(filepath).read() :讀取文件中的內(nèi)容
open(filepath).readline() :讀取文件中一行的內(nèi)容
open(filepath).readline()[1] :讀取文件中的內(nèi)容,返回值是列表。
open(filepath).close() :關(guān)閉文件
open(filepath).seek(0) :將光標(biāo)回到首位
with open()函數(shù),不用close()方法,默認(rèn)自動關(guān)閉,所以需要制定一些規(guī)則.
文件內(nèi)建函數(shù)和方法:
open() : 打開文件
read() :輸入
readline() :輸入一行
seek() :文件內(nèi)移動
write() :輸出
close() :關(guān)閉文件
網(wǎng)站名稱:python打開文件函數(shù),python可以用什么函數(shù)打開文件
地址分享:http://chinadenli.net/article22/dsgehjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)頁設(shè)計(jì)公司、自適應(yīng)網(wǎng)站、用戶體驗(yàn)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)