Python文件的操作處理詳解
1.使用open()函數(shù)打開文件夾
在讀取一個文件的內(nèi)容之前,需要先打開這個文件。在Python程序中可以通過內(nèi)置函數(shù)open()來打開一個文件程序中,,并用相關(guān)的方法讀或?qū)懳募募械膬?nèi)容以供程序的處理和使用,同時可以將文件看作Python中的一種數(shù)據(jù)類型。是用函數(shù)open()的語法格式如下。
open(filename, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True, opener=None)
open: 打開
以什么樣的方式打開, 讀或?qū)?read, write
以讀的方式:文本的方式, 二進制的方式
以寫的方式:文本的方式,二進制的方式
寫文件的時候:覆蓋,追加(兩種方式)
當(dāng)使用上述函數(shù)open()打開一個文件后, 就會放回一個文件對象。上述格式中主要參數(shù)的具體說明如下所示:
filename:表示要打開的文件名。(路徑+文件名)mode:模式。buffering:可選參數(shù),緩沖區(qū)大小encoding:文件編碼類型。- 文本文件才有可能需要編碼,二進制文件不需要指定編碼 否則會報出異常
errors:編碼錯誤處理方式。newline:控制通用換行符模式的行為。closefd:控制在關(guān)閉文件時是否徹底關(guān)閉文件。
上述格式中,參數(shù)“mode”表示文件打開模式。在Python程序中,常用的文件打開模式如下表所示。
| 模式 | 描述 |
| r | 以讀的方式打開文件(默認) |
| rb | 以二進制的格式打開一個文件只用于讀。文件指針將會放在文件開頭。 |
| r+ | 打開一個文件用于讀寫。文件指針將會放在文件開頭。 |
| rb+ | 以二進制的格式打開一個文件用于讀寫。文件指針將會放在文件開頭。 |
| w | 以寫的方式打開,先清空文件再寫(覆蓋),如果該文件不存在,創(chuàng)建新文件 |
| wb | 以二進制的格式打開文件并寫入,先清空文件再寫(覆蓋),如果該文件不存在,創(chuàng)建新文件。 |
| w+ | 以二進制的格式打開一個文件用于讀寫。先清空文件再寫(覆蓋),如果該文件不存在,創(chuàng)建新文件。 |
| wb+ | 以二進制的格式打開文件并讀寫,先清空文件再寫(覆蓋),如果該文件不存在,創(chuàng)建新文件。 |
| a | 以追加的方式去寫 |
| ab | 以二進制的格式打開一個文件夾用于追加。如果該文件存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會寫入到已有的內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件。 |
| a+ | 打開一個文件用于讀寫。如果該文件存在,文件指針將會放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件。 |
| ab+ | 以二進制格式打開一個文件用于追加。如果該文件存在,文件指針將會放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件。 |
下圖很好的總結(jié)了這幾種模式:

#默認以文本讀的方式打開
file_obj = open("file.txt", encoding="utf-8")
data = file_obj.read()
print(data)
file_obj.close()
file_obj = open("file.txt", "rt", encoding="utf-8")
data = file_obj.read()
print(data)
file_obj.close()
file_obj = open("file.txt", "w", encoding="utf-8")
data = file_obj.write("11111111111111111")
print(data)
file_obj.close()
file_obj = open("file2.txt", "w", encoding="utf-8")
data = file_obj.write("11111111111111111")
print(data)
file_obj.close()
file_obj = open("file2.txt", "a", encoding="utf-8")
data = file_obj.write("2222222222222")
print(data)
file_obj.close()
file_obj = open("file3.txt", "a+", encoding="utf-8")
file_obj.write("33333333333333333333333333")
file_obj.close()
file_obj = open("file.txt", encoding="utf-8")
data = file_obj.read()
file_obj.close()
1.1.2二進制的方式(打開):圖片,音頻,視頻或者其他的非文本的文件。
#打開”IO.png“文件,并以二進制的方式讀出, b不能單獨使用(b前的r不能省略)
file_obj = open("IO.png", "rb")
data = file_obj.read()
print(data)
#關(guān)閉文件
file_obj.close()
#以二進制的方式寫入文件”psb_copy.jpg“
file_obj = open("psb_copy.jpg", "wb")
file_obj.write(data)
#關(guān)閉文件
file_obj.close()
注意:“IO.png”文件中,以存入了一張照片。
2.文件的操作
以文本方式寫入的文件, 無需指定編碼 以二進制方式寫入文件,寫入的內(nèi)容要 求為bytes,所以通過str.encode('utf-8')來返回 bytes
1.2.1 文件寫操作:
write()方法 f.write("hello world") #向目標(biāo)文本文 件寫入一行字符串
f.write("hello world".encode("utf-8")) #向目標(biāo)二進制文件寫入一行字符串1.2.2文件寫操作:
writelines()方法寫入 文件的字符串序列。
seq = ["hello world 1\n", "nihao wohao 2"] f.writelines( seq ) 7/151.2.3 文件讀操作:
read()方法從文件讀取指定的字節(jié)數(shù),如果未給定或為負則讀取所有。
ret = f.read() #默認全部讀出 ret = f.read(5) #讀出指定長度字符1.2.4 文件讀操作:
readline()方法可以讀 出一行數(shù)據(jù)ret = f.readline() #讀取一行注意:有個很像的
readlines()方法ret = f.readlines() #返回的是一個列 表,且返回的是你讀取的字符所在行的整個內(nèi)容,但是當(dāng)數(shù)據(jù)較大時,這樣的用法會很占 用內(nèi)存。
3.使用File操作文件
3.1File對象的介紹
File對象中的屬性信息如下表所示。
File對象中的屬性信息
| 屬性 | 描述 |
| file.closed | 如果文件已關(guān)閉返回True;否則返回False |
| file.mode | 返回打開文件的訪問模式 |
| file.name | 返回文件的名稱 |
在Python程序中,對象File時通過內(nèi)置函數(shù)實現(xiàn)對文件操作的,其中常用的內(nèi)置函數(shù)如下。
File對象中的內(nèi)置函數(shù)
| 函數(shù) | 功能 |
| file.close() | 關(guān)閉文件,關(guān)閉文件后不能再進行讀寫操作 |
| file.flush() | 刷新文件內(nèi)部緩沖區(qū),直接把內(nèi)部緩沖區(qū)的數(shù)據(jù)寫入文件,而不是被動的等待輸出緩沖區(qū)寫入。 |
| file.fileno() | 返回一個整形的文件描述,可以用在如os模塊的read方法等一些底層操作上 |
| file.isatty() | 如果文件連接到一個終端設(shè)備返回True,否則返回False |
| file.next() | 返回文件下一行 |
| file.read([size]) | 從文件讀取指定的字節(jié)數(shù),如果為給定或者為負值,則讀取所有字節(jié) |
| file.readline([size]) | 讀取整行,包括“\n” |
| file.readlines([hint]) | 讀取所有行并返回列表,如給定hint>,返回總合大于約為hint字節(jié)的行,實際讀取值可能比hine大,因為需要填充緩沖區(qū) |
| file.seek(offsrt[, whence]) | 設(shè)置文件當(dāng)前位置 |
| file.tell | 返回文件當(dāng)前位置 |
| file.truncate([size]) | 截取文件,截取的字節(jié)通過size指定,默認為當(dāng)前文件的位置 |
| file.write(str) | 將字符串寫入文件,沒有返回值 |
| file.writeline(lines) | 向文件寫入一個序列字符串列表,如果需要換行,則要自己加入換行符。 |
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信