亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python基本文件操作實(shí)用指南

 更新時(shí)間:2022年06月08日 15:49:46   作者:ζ小菜雞  
文件操作是我們開(kāi)發(fā)中必不可少的一項(xiàng)需求,下面這篇文章主要給大家介紹了關(guān)于Python基本文件操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、前言

在Python中,內(nèi)置了文件(File)對(duì)象。在使用文件對(duì)象時(shí),首先需要通過(guò)內(nèi)置的open()方法創(chuàng)建一個(gè)文件對(duì)象,然后通過(guò)該對(duì)象提供的方法進(jìn)行一些基本文件操作。例如,可以使用文件對(duì)象的write()方法向文件中寫(xiě)入內(nèi)容,以及使用close()方法關(guān)閉文件等。下面將介紹如何應(yīng)用Python的文件對(duì)象進(jìn)行基本文件操作。

二、創(chuàng)建和打開(kāi)文件

在Python中,想要操作文件需要先創(chuàng)建或者打開(kāi)指定的文件并創(chuàng)建文件對(duì)象。這可以通過(guò)內(nèi)置的open()函數(shù)實(shí)現(xiàn)。open()函數(shù)的基本語(yǔ)法格式如下:

file = open(filename[,mode[,buffering]])

參數(shù)說(shuō)明:

  • file:被創(chuàng)建的文件對(duì)象
  • filename:要?jiǎng)?chuàng)建或打開(kāi)文件的文件名稱(chēng),需要使用單引號(hào)或雙引號(hào)括起來(lái)。如果要打開(kāi)的文件和當(dāng)前文件在同一個(gè)目錄下,那么直接寫(xiě)文件名即可,否則需要指定完整路徑。例如,要打開(kāi)當(dāng)前路徑下的名稱(chēng)為status.txt的文件,可以使用“status.txt”。
  • mode:可選參數(shù),用于指定文件的打開(kāi)模式。其參數(shù)值如下面所示。默認(rèn)打開(kāi)模式為只讀(即r)
說(shuō)明
r以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。
rb以二進(jìn)制格式打開(kāi)文件,并采取只讀模式。文件的指針將會(huì)放在文件的開(kāi)頭。一般用于非文本文件,如照片、音樂(lè)等。
r+打開(kāi)文件后,可以讀取文件內(nèi)容,也可以寫(xiě)入新的內(nèi)容覆蓋原有內(nèi)容(從文件開(kāi)頭進(jìn)行覆蓋)
rb+以二進(jìn)制格式打開(kāi)文件,并采取寫(xiě)模式。文件的指針將會(huì)放在文件的開(kāi)頭。一般用于非文本文件,如圖片、聲音等。
w以只寫(xiě)模式打開(kāi)文件
wb以二進(jìn)制格式打開(kāi)文件,并且采用只寫(xiě)模式。一般用于非文本文件,如圖片、聲音等
w+打開(kāi)文件后,先清空原有內(nèi)容,使其變?yōu)橐粋€(gè)空的文件,對(duì)這個(gè)空文件有讀寫(xiě)權(quán)限
wb+以二進(jìn)制格式打開(kāi)文件,并且采用讀寫(xiě)模式。一般用于非文本文件,如圖片、聲音等
a以追加模式打開(kāi)一個(gè)文件。如果該文件已經(jīng)存在,文件指針將放在文件的末尾(即新內(nèi)容會(huì)被寫(xiě)入到已有內(nèi)容之后),否則,創(chuàng)建新文件用于寫(xiě)入
ab以二進(jìn)制格式打開(kāi)一個(gè)文件,并采用追加模式。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾(即新內(nèi)容會(huì)被寫(xiě)入到已有內(nèi)容之后),否則,創(chuàng)建新文件用于寫(xiě)入
a+已讀寫(xiě)模式打開(kāi)文件。如果該文件已經(jīng)存在,文件指針將放在文件的末尾(即新內(nèi)容會(huì)被寫(xiě)入到已有內(nèi)容之后),否則,創(chuàng)建新文件用于寫(xiě)入
ab+以二進(jìn)制格式打開(kāi)一個(gè)文件,并采用追加模式。如果該文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾(即新內(nèi)容會(huì)被寫(xiě)入到已有內(nèi)容之后),否則,創(chuàng)建新文件用于寫(xiě)入

1.打開(kāi)一個(gè)不存在的文件時(shí)先創(chuàng)建該文件

在默認(rèn)的情況下,使用open()函數(shù)打開(kāi)一個(gè)不存在的文件,會(huì)拋出如圖所示的異常。

在這里插入圖片述

要解決上圖所示的錯(cuò)誤,主要有以下兩種方法:

  • 在當(dāng)前目錄下(即與執(zhí)行的文件相同的目錄)創(chuàng)建一個(gè)名稱(chēng)為 status.txt 的文件。
  • 在調(diào)用open()函數(shù)時(shí),指定mode的參數(shù)值為w、w+、a、a+。這樣,當(dāng)要打開(kāi)的文件不存在時(shí),就可以創(chuàng)建新的文件了。

2.以二進(jìn)制形式打開(kāi)文件

使用open()函數(shù)不僅可以文本的形式打開(kāi)文本文件,而且可以以二進(jìn)制形式打開(kāi)非文本文件,如圖片、音頻文件等。例如,創(chuàng)建一個(gè)名稱(chēng)為picture.jpg的圖片文件(如圖所示),并且應(yīng)用open()函數(shù)以二進(jìn)制方式打開(kāi)該文件。

以二進(jìn)制方式打開(kāi)該文件,并輸出創(chuàng)建的對(duì)象對(duì)的代碼如下:

file = open("picture.jpg", "rb")
print(file)

執(zhí)行上面代碼,將顯示如圖所示的結(jié)果:

從上圖中可看出,創(chuàng)建的是一個(gè)BufferedReader對(duì)象。對(duì)于該對(duì)象生成后,可以再應(yīng)用其他的第三方模塊進(jìn)行處理。例如,上面的BufferedReader對(duì)象是通過(guò)打開(kāi)圖片文件實(shí)現(xiàn)的。那么就可以將其傳入到第三期的圖像處理庫(kù)PIL的Image模塊的open()方法中,以便于對(duì)圖像進(jìn)行處理(如調(diào)整大小等)

3.打開(kāi)文件時(shí)指定編碼方式

在使用open()函數(shù)打開(kāi)文件時(shí),默認(rèn)采用GBK編碼,當(dāng)被打開(kāi)的文件不是GBK編碼時(shí),將拋出異常,如圖所示:

解決該問(wèn)題的方法有兩種,一種直接修改文件的編碼,另外一種是在打開(kāi)文件時(shí),直接指定使用的編碼方式。推薦采用后一種方法。下面重點(diǎn)介紹如何在打開(kāi)文件時(shí)指定編碼方式。

在調(diào)用open()函數(shù)時(shí),通過(guò)添加“encoding=‘utf-8’”參數(shù)即可實(shí)現(xiàn)編碼指定為UTF-8。如果想指定其他編碼可以將單引號(hào)中的內(nèi)容替換為想要指定的編碼即可。

例如,打開(kāi)采用UTF-8編碼保存的notice.txt文件,可以使用下面的代碼:

file = open("notice.txt", "r", encoding='utf-8')

三、關(guān)閉文件

打開(kāi)文件后,需要及時(shí)關(guān)閉,以免對(duì)文件造成不必要的破壞。關(guān)閉文件可以使用文件對(duì)象close()方法實(shí)現(xiàn)。close()方法的語(yǔ)法格式如下:

file.close()    # 關(guān)閉文件

說(shuō)明: close()方法先刷新緩沖區(qū)中還沒(méi)寫(xiě)入的信息,然后再關(guān)閉文件,這樣可以將沒(méi)有寫(xiě)入到文件的內(nèi)容寫(xiě)入到文件中。在關(guān)閉文件后,便不能再進(jìn)行寫(xiě)入操作了。

四、打開(kāi)文件時(shí)使用with語(yǔ)句

打開(kāi)文件后,要及時(shí)將其關(guān)閉,如果忘記關(guān)閉可能會(huì)帶來(lái)意想不到的問(wèn)題。另外如果在打開(kāi)文件時(shí)拋出異常,那么將導(dǎo)致文件不能及時(shí)關(guān)閉。為了更好地避免此類(lèi)事情的發(fā)生,可以使用Python提供with語(yǔ)句。從而實(shí)現(xiàn)在處理文件時(shí),無(wú)論是否拋出異常,都能保障with語(yǔ)句執(zhí)行完畢后關(guān)閉已經(jīng)打開(kāi)的文件。with語(yǔ)句的基本語(yǔ)法格式如下:

with expression as target:
	with-body

參數(shù)說(shuō)明:

expression :用于指定一個(gè)表達(dá)式,這里可以是打開(kāi)文件的函數(shù)open()。
target:用于指定一個(gè)變量,并且將expression 的結(jié)果保存到這個(gè)變量中。
with-body:用于指定with語(yǔ)句體,其中可以是執(zhí)行with語(yǔ)句相關(guān)聯(lián)的一些操作語(yǔ)句。如果不想執(zhí)行語(yǔ)句,可以直接使用pass語(yǔ)句來(lái)代替。

例如打開(kāi)文件的語(yǔ)句,修改后的代碼如下:

print("\n", "=" * 10, "Python經(jīng)典應(yīng)用", "=" * 10)
with open("massage.txt", "w") as file:  # 創(chuàng)建或打開(kāi)保存Python經(jīng)典應(yīng)用信息的文件
    pass
print("\n 即將顯示……\n")

五、寫(xiě)入文件內(nèi)容

在前面的內(nèi)容中,雖然創(chuàng)建并打開(kāi)了一個(gè)文件,但是該文件中并沒(méi)有任何內(nèi)容,它的大小是0kb。Python中的文件對(duì)象提供了write()方法,可以像文件中寫(xiě)入內(nèi)容。write()方法的語(yǔ)法格式如下:

file.write(string)

參數(shù)說(shuō)明:

  • file:打開(kāi)的文件對(duì)象
  • string:要寫(xiě)入的字符串

注意: 在調(diào)用write()方法向文件寫(xiě)入內(nèi)容的前提是,打開(kāi)文件時(shí),指定的打開(kāi)模式為w(可寫(xiě))或者a(追加),否則,將拋出如圖所示的異常:

六、讀取文件

在Python中打開(kāi)文件后,除了可以向其寫(xiě)入或追加內(nèi)容,還可以讀取文件中的內(nèi)容。讀取文件內(nèi)容主要分為以下幾種情況。

1.讀取指定字符

文件對(duì)象提供了read()方法讀取指定個(gè)數(shù)的字符,其語(yǔ)法格式如下:

file.read([size])

參數(shù)說(shuō)明:

  • file:打開(kāi)的文件對(duì)象
  • size:可選參數(shù),用于指定要讀取的字符個(gè)數(shù),如果省略則一次性讀取所有內(nèi)容。

注意: 在調(diào)用read()方法讀取文件內(nèi)容的前提是,打開(kāi)文件時(shí),指定的模式為r(只讀)或者r+(讀寫(xiě)),否則,將拋出如圖所示的異常。

例如,讀取massage.txt中的前9字符串,可以使用下列代碼:

with open("massage.txt", "r", encoding='utf-8') as file:  # 打開(kāi)文件
    string = file.read(9)  # 讀取前9字符串
    print(string)

例如,massage.txt文件的內(nèi)容為:

Python的強(qiáng)度,強(qiáng)度到你無(wú)法想象?。。?

那么執(zhí)行以上代碼,將顯示以下內(nèi)容:

使用read([size])方法讀取文件時(shí),是從文件的開(kāi)頭讀取部分內(nèi)容,可以先使用文件對(duì)象的seek()方法將文件的指針移動(dòng)到新的位置,然后在應(yīng)用read([size])方法讀取,seek()方法基本語(yǔ)法如下:

file.seek(offset[,whence])

參數(shù)說(shuō)明:

  • file:表示已經(jīng)打開(kāi)的文件對(duì)象。
  • offset:用于指定移動(dòng)的字符個(gè)數(shù),其具體位置與whence有關(guān)。
  • whence:用于指定從什么位置開(kāi)始計(jì)算。值為0表示從文件頭開(kāi)始計(jì)算,值為1表示從當(dāng)前位置計(jì)算,值為2表示從文件尾開(kāi)始計(jì)算,默認(rèn)為0。

注意: 對(duì)于 whence參數(shù),如果在打開(kāi)文件時(shí),沒(méi)有使用b模式(即rb),那么只允許從文件頭開(kāi)始計(jì)算相對(duì)位置,從文件尾計(jì)算時(shí)就會(huì)引發(fā)如圖所示的異常:

例如,想要從文件的第6個(gè)字符開(kāi)始讀取2個(gè)字符,可以使用下列代碼:

with open("message.txt", "r") as file:  # 打開(kāi)文件
    file.seek(5)              # 移動(dòng)指針到新的位置
    string = file.read(2)	# 讀取2個(gè)字符
    print(string)

如果message.txt文件中內(nèi)容為:

123456789

那么執(zhí)行上面代碼,將顯示以下結(jié)果:

說(shuō)明: 在使用seek()方法時(shí),offset的值是按照一個(gè)漢字占兩個(gè)字符、英文和數(shù)字點(diǎn)占一個(gè)字符計(jì)算的,這個(gè)與read(size)方法不同。

2.讀取一行

在使用read()方法讀取文件時(shí),如果文件很大,一次讀取完全部?jī)?nèi)容到內(nèi)存,容易造成年內(nèi)存不足,所以采取逐行讀取。文件對(duì)象提供了readline()方法用于每次讀取一行數(shù)據(jù)。readline()方法的語(yǔ)法格式如下:

file.readline()

其中,file為打開(kāi)的文件對(duì)象,同read()方法一樣,打開(kāi)文件時(shí),指定的模式為r(只讀)或者r+(讀寫(xiě))。

print("\n", "=" * 20, "Python經(jīng)典應(yīng)用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:  
    number = 0  # 記錄行號(hào)
    while True:
        number += 1
        line = file.readline()
        if line == "":
            break
        print(number, line, end="\n")
print("\n ", "=" * 20, "over" * 20, "\n")

如果message.txt文件中內(nèi)容為下圖所示:

執(zhí)行上面代碼,將顯示以下內(nèi)容:

3.讀取全部行

讀取全部行的作用同調(diào)用read()方法時(shí)不指定size類(lèi)似,只不過(guò)讀取全部行時(shí),返回的是一個(gè)字符串列表,每個(gè)元素為文件的一行內(nèi)容。讀取全部行,使用的是文件對(duì)象的readlines()方法,其語(yǔ)法格式如下:

file.readlines()

其中,file為打開(kāi)的文件對(duì)象,同read()方法一樣,打開(kāi)文件時(shí),指定的模式為r(只讀)或者r+(讀寫(xiě))。

例如,通過(guò)readlines()方法讀取message.txt文件中所有內(nèi)容,并輸出讀取內(nèi)容結(jié)果,代碼如下:

print("\n", "=" * 20, "Python經(jīng)典應(yīng)用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:
    message = file.readlines()  # 讀取全部信息
    print(message)
    print("\n ", "=" * 20, "over", "=" * 20, "\n")

執(zhí)行上面代碼,將顯示以下內(nèi)容:

從該運(yùn)行結(jié)果中可以看出readlines()方法的返回值為一個(gè)字符串列表。在這個(gè)字符串列表中,每個(gè)元素為一行內(nèi)容。如果文件較大時(shí),采用這種方法輸出讀取的文件內(nèi)容會(huì)很慢。這時(shí)可以將列表的內(nèi)容逐行輸出,例如,代碼可以修改為以下內(nèi)容:

print("\n", "=" * 20, "Python經(jīng)典應(yīng)用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:
    messageall = file.readlines()  # 讀取全部信息
    for message in messageall:
        print(message)  # 輸出一條信息
print("\n ", "=" * 20, "over", "=" * 20, "\n")

執(zhí)行上面代碼,將顯示以下內(nèi)容:

總結(jié) 

到此這篇關(guān)于Python基本文件操作實(shí)用指南的文章就介紹到這了,更多相關(guān)Python文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論