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

#默認以文本讀的方式打開
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)
#關閉文件
file_obj.close()
#以二進制的方式寫入文件”psb_copy.jpg“
file_obj = open("psb_copy.jpg", "wb")
file_obj.write(data)
#關閉文件
file_obj.close()
注意:“IO.png”文件中,以存入了一張照片。
2.文件的操作
以文本方式寫入的文件, 無需指定編碼 以二進制方式寫入文件,寫入的內(nèi)容要 求為bytes,所以通過str.encode('utf-8')來返回 bytes
1.2.1 文件寫操作:
write()方法 f.write("hello world") #向目標文本文 件寫入一行字符串
f.write("hello world".encode("utf-8")) #向目標二進制文件寫入一行字符串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)容,但是當數(shù)據(jù)較大時,這樣的用法會很占 用內(nèi)存。
3.使用File操作文件
3.1File對象的介紹
File對象中的屬性信息如下表所示。
File對象中的屬性信息
| 屬性 | 描述 |
| file.closed | 如果文件已關閉返回True;否則返回False |
| file.mode | 返回打開文件的訪問模式 |
| file.name | 返回文件的名稱 |
在Python程序中,對象File時通過內(nèi)置函數(shù)實現(xiàn)對文件操作的,其中常用的內(nèi)置函數(shù)如下。
File對象中的內(nèi)置函數(shù)
| 函數(shù) | 功能 |
| file.close() | 關閉文件,關閉文件后不能再進行讀寫操作 |
| file.flush() | 刷新文件內(nèi)部緩沖區(qū),直接把內(nèi)部緩沖區(qū)的數(shù)據(jù)寫入文件,而不是被動的等待輸出緩沖區(qū)寫入。 |
| file.fileno() | 返回一個整形的文件描述,可以用在如os模塊的read方法等一些底層操作上 |
| file.isatty() | 如果文件連接到一個終端設備返回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]) | 設置文件當前位置 |
| file.tell | 返回文件當前位置 |
| file.truncate([size]) | 截取文件,截取的字節(jié)通過size指定,默認為當前文件的位置 |
| file.write(str) | 將字符串寫入文件,沒有返回值 |
| file.writeline(lines) | 向文件寫入一個序列字符串列表,如果需要換行,則要自己加入換行符。 |
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
利用keras加載訓練好的.H5文件,并實現(xiàn)預測圖片
今天小編就為大家分享一篇利用keras加載訓練好的.H5文件,并實現(xiàn)預測圖片,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Selenium Webdriver元素定位的八種常用方式(小結)
這篇文章主要介紹了Selenium Webdriver元素定位的八種常用方式(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
python判斷文件夾內(nèi)是否存在指定后綴文件的實例
今天小編就為大家分享一篇python判斷文件夾內(nèi)是否存在指定后綴文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06

