首頁 > 軟體

python的open函數常見用法

2022-11-27 14:00:07

在python中使用open函數對檔案進行處理。

1.open()

python開啟檔案使用open()函數,返回一個指向檔案的指標。該函數常用以下三個引數。

1.1 引數1

目標檔案的路徑+名字。最好使用r"路徑"這種原始字串寫法,防止有跳脫字元影響實際路徑。

1.2 引數2

操作檔案的方式mode=‘方式’。mode=可以省略。下面對操作檔案的方式進行詳細說明:

(1)r

以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是open預設模式。如果檔案不存在,會報錯。

(2)rb

以二進位制唯讀方式開啟一個檔案。檔案指標將會放在檔案的開頭。注意這種方式不能使用encoding,不然會報錯。

同樣的內容使用一般方式和二進位制的方式開啟。

fp = open(r"E:test.txt",'r',encoding='utf-8')
content = fp.readline()
print(content)

輸出:加油,好好幹!

fp = open(r"E:test.txt",'rb')
content = fp.readline()
print(content)

輸出:b’xe5x8axa0xe6xb2xb9xefxbcx8cxe5xa5xbdxe5xa5xbdxe5xb9xb2xefxbcx81’

(3)r+

以讀寫方式開啟一個檔案。檔案指標將會放在檔案的開頭。直接寫入會覆蓋檔案開頭的內容。

原始內容:

加油,好好幹!別放棄

fp = open(r"E:test.txt",'r+',encoding='utf-8')
fp.write("開心吧")
fp.close()
fp = open(r"E:test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()

執行後:

開心吧好好幹!別放棄

(4)rb+

以二進位制讀寫方式開啟一個檔案。檔案指標將會放在檔案的開頭。

(5)w

以寫入開啟一個檔案。如果該檔案已存在,則將其覆蓋。如果該檔案不存在,則建立新檔案。

(6)wb

以二進位制寫入方式開啟一個檔案。如果該檔案已存在,則將其覆蓋。如果該檔案不存在,則建立新檔案。
(7)w+

以讀寫方式開啟一個檔案。如果該檔案已存在,則將其覆蓋。如果該檔案不存在,則建立新檔案。

原始內容:

開心吧好好幹!別放棄

fp = open(r"E:test.txt",'w+',encoding='utf-8')
fp.write("認真一點")
fp.close()
fp = open(r"E:test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()

執行後直接覆蓋所有原始內容:

認真一點

(8)wb+

以二進位制讀寫格式開啟一個檔案。如果該檔案已存在,則將其覆蓋。如果該檔案不存在,則建立新檔案。

(9)a

以追加方式開啟一個檔案。如果檔案已存在,檔案指標將會放在檔案結尾。即:新的內容將會被追加到已有的內容之後。如果該檔案不存在,則建立新檔案可用於寫入。注意,不能讀,讀會出錯。

(10)a+

以讀寫方式開啟一個檔案。如果檔案已存在,檔案指標將會放在檔案結尾。即:新的內容將會被追加到已有的內容之後。如果該檔案不存在,則建立新檔案可用於讀寫。

原始內容:

認真一點

fp = open(r"E:test.txt",'a+',encoding='utf-8')
fp.write("你就離成功近一點")
fp.close()
fp = open(r"E:test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()

執行後追加:

認真一點你就離成功近一點

這時候,指標放在檔案尾部,直接讀取會沒有內容,需要將指標移動(seek)到檔案的頭部:

with open(r"E:test.txt",'a+',encoding='utf-8') as fp:
    fp.seek(0,0)
    content = fp.readline()
    print(content)

(11)ab+

以二進位制讀寫方式開啟一個檔案。如果檔案已存在,檔案指標將會放在檔案結尾。即:新的內容將會被追加到已有的內容之後。如果該檔案不存在,則建立新檔案可用於讀寫。

1.3 引數3

編碼的方式,常用utf-8,gbk等。如:encoding=‘utf-8’

如果是二進位制的方式,這個引數不需要填,填了還會報錯。

2.with open() as

這是open()的一種升級用法,控制塊結束的時候檔案會自動關閉,不需要顯示地呼叫close()關閉檔案。這種方法更方便使用,所以推薦大家使用這種方法。

with open(r"E:test.txt",'r',encoding='utf-8') as fp:
    content = fp.readlines()

3.open函數常用的方法

3.1 讀

檔案內容:

認真一點你就離成功近一點
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff

(1)read()

一次性讀取整個檔案內容,將整個檔案放到一個字串中。使用read(size)方法,返回檔案中的前size個字元:

content = fp.read()

輸出:

認真一點你就離成功近一點
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff

(2)readline()

每次讀取一行內容。

content = fp.readline()

輸出:

認真一點你就離成功近一點

(3)readlines()

一次性讀取整個檔案內容到一個迭代器以供我們遍歷(讀取到一個list中,以供使用,比較方便)

content = fp.readlines()

輸出;

[‘認真一點你就離成功近一點n’, ‘啊啊啊啊啊啊啊啊啊啊啊n’, ‘fffffffffff’]

3.2 寫

(1)write()

fp.write()的引數必須是一個字串,就是你要寫入檔案的內容.

(2)writelines()

fp.writelines()的引數可以是列表,也可以是字串。

3.3 獲取檔案讀寫型別

如果檔案可寫,則 fp.writable() 方法返回 True,否則返回 False。

如果檔案是可讀的,則 fp.readable() 方法返回 True,否則返回 False。

比如:以w方式開啟的檔案,fp.readable()返回False,fp.writable()返回True。

3.4 指標移動

seek

f.seek(偏移量,[起始位置])

起始位置的三種取值:0檔案開頭,1當前位置,2檔案末尾

例子見1.3中(10)a+

3.5 當前指標位置

tell()返回一個整數,表示當前檔案指標的位置(就是到檔案頭的位元組數).

如果是utf-8編碼,那麼一箇中文字元佔用三個位元組,一個英文字元佔用一個位元組。如果是gbk編碼,那麼一箇中文字元佔用兩個位元組,一個英文字元佔用一個位元組。

with open(r"E:test.txt",'a+',encoding='utf-8') as fp:
    content = fp.tell()
    print(content)

列印:30

3.6 truncate

truncate(size) 方法用於截斷檔案,如果指定了可選引數 size,則表示截斷檔案為 size 個字元。 如果沒有指定 size,則從當前位置起截斷;截斷之後 size 後面的所有字元被刪除。

到此這篇關於python的open函數使用的文章就介紹到這了,更多相關python open函數使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com