日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件

發(fā)布時間:2024/7/23 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python3 open() 函數(shù)詳解 讀取文件寫入文件追加文件二進制文件

open()函數(shù)的主要作用是打開文件并返回相應文件對象,使用文件對象可以對當前文件進行讀取、寫入、追加等操作,默認情況下"r"模式,文件不存在的話會發(fā)生OSError錯誤的。

它是Python的內(nèi)置函數(shù),在python文件中直接可以使用。

語法

#常用方式

open(file, mode='r')

#完整參數(shù)

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

參數(shù)

file - 文件的路徑(相對或絕對)

mode[可選] - 指定文件的打開模式,分為只讀,只寫,讀寫,追加等。還有一些常用的組合模式,詳見下表:

模式及含義

字符含義

'r'只讀方式打開文件,文件不可寫,文件如果不存在則報錯,打開文件后指針會放在文件的開頭,這是默認模式

'w'打開文件只用于寫入內(nèi)容,不可讀取,如果文件不存在則自動創(chuàng)建,如果原文件已存在則會將其清空覆蓋。

'x'獨占只寫模式,所謂獨占,就是要求當前指定文件必須是不存在的,然后再由它進行創(chuàng)建。如果已存在則會報錯。

'a'打開文件用于追加(只寫),如果文件不存在則自動創(chuàng)建,如果已存在,則在文件內(nèi)容的最后追加內(nèi)容。

'b'二進制模式,一般用于非文本文件,如圖片等。

't'文本模式(默認)

'+'讀寫模式,一般配合只讀、只寫模式使用,以擴充它們的功能。

'U'通用換行模式(已廢棄)

常用組合模式

字符含義

'r+'打開文件用于讀寫,指針放在文件開頭,寫入的內(nèi)容從當前所在位置進行替換(需要注意:如果是新打開的文件,就是從開頭開始替換,如果使用了readline或readlines方法讀取內(nèi)容后,當前位置會發(fā)生改變的)。

'rb'以二進制格式打開文件用于只讀,文件不存在會報錯。

'rb+'以二進制格式打開文件用于讀寫,寫入的內(nèi)容類型必須是bytes(b)類型。寫入的內(nèi)容從當前所在位置進行替換。

'w+'打開文件用于讀寫,文件不存在則創(chuàng)建,存在則覆蓋。

'wb'以二進制格式打開文件用于只寫,寫入的內(nèi)容類型必須是bytes(b)類型。

'wb+'以二進制格式打開文件用于讀寫,寫入的內(nèi)容類型必須是bytes(b)類型。寫入的內(nèi)容直接覆蓋原文件。

'a+'打開文件用于讀寫,文件不存在則創(chuàng)建,存在則在文件內(nèi)容末尾追加內(nèi)容。

'ab'以二進制格式打開文件用于只寫(追加),寫入的內(nèi)容類型必須是bytes(b)類型。

'ab+'以二進制格式打開文件用于讀寫,寫入的內(nèi)容類型必須是bytes(b)類型。寫入的內(nèi)容會在文件內(nèi)容末尾追加。

buffering[可選] - 用于設置緩沖策略,必須是一個整數(shù),傳遞0關(guān)閉緩沖(僅允許在二進制下可以使用),傳遞1則是行緩沖(僅在文本模式下可用),傳遞大于1的整數(shù),則是指定緩沖區(qū)的大小(以字節(jié)為單位),如果沒有給出指定的緩沖策略,將按照二進制文件以固定大小進行緩沖,在許多的系統(tǒng)上,緩沖區(qū)的長度通常為4096或8192字節(jié),而“交互式”文件文件(isatty()返回True)使用行緩沖,其他文件文件與二進制文件的一致。

encoding[可選] - 指定打開文件的編碼和解碼的字符編碼,應該只用于文本模式下。

errors[可選] - 指定文件在編碼和解碼時發(fā)生錯誤的處理方式,默認是嚴格的模式,發(fā)生錯誤會報ValueError錯誤,其他參數(shù)詳見下表:

字符含義

'strict'嚴格模式,發(fā)生錯誤會直接報錯,與不傳遞值效果一致。

'ignore'忽略模式,一般不建議使用,可能會導致數(shù)據(jù)丟失。

'replace'在有錯誤的地方插入指定的標記??梢允侨我庾址?#xff0c;例如('?')

'surrogateescape'一般用于處理未知編碼的文件

'xmlcharrefreplace'僅在寫入時使用,將編碼不支持的字符轉(zhuǎn)換為相應的XML字符

'backslashreplace'用Python的反向轉(zhuǎn)義序列替換格式錯誤的數(shù)據(jù)

'namereplace'僅在寫入時使用,用\N{...}轉(zhuǎn)義序列替換不支持的字符

newline[可選] - 指定換行模式,僅適用于文本模式,可以是None,'\n','\r'和'\r\n'。

closefd[可選] - 如果參數(shù)為false時且file給的是文件描述符,則在關(guān)閉文件時,底層文件描述符將保持打開狀態(tài),如果file給出的是文件名,則必須為True(默認值),否則報錯。

opener[可選] - 自定義文件的開啟者,這個不常用。

返回值

相應文件對象

實例

§ 實例1 - 'r','r+','rb','rb+'模式

#r

>>>f = open('text.txt', 'r')

>>>f.readline()

'abcdefg1234567'

f.close()

#r+

#r是只讀模式,由于加上了+號,就變成了讀寫模式了,但是它與其他寫模式不同,它是從當前光標位置開始寫入的,默認是從文件內(nèi)容的頭部開始??梢酝ㄟ^seek來控制光標位置,也會受到read、readline、readlines影響。

#本例中頭部的abc被替換成了aaa。

>>>f = open('text.txt', 'r+')

>>>f.write('aaa')

>>>f.seek(0)

>>>f.read()

'aaadefg1234567'

>>>f.close()

#rb

>>>f = open('text.txt', 'rb')

>>>f.read()

b'abcdefg1234567'

#rb+

>>>f = open('text.txt', 'rb+')

>>>f.write(b'aaa')

>>>f.seek(0)

>>>f.read()

b'aaadefg1234567'

>>>f.close()

§ 實例2 - 'w','w+','wb','wb+'模式

#text.txt原本內(nèi)容為“abcdefg1234567”。

#w

#由于w是只寫模式,所以寫入完畢后還得再打開一次才能讀取到內(nèi)容。

>>>f = open('text.txt', 'w')

>>>f.write('aaa')

>>>f.close()

>>>f = open('text.txt', 'r')

>>>f.readline()

'aaa'

>>>f.close()

#從結(jié)果可以看出,文件的內(nèi)容被完全覆蓋了。

#w+

#這樣就可以覆蓋然后又讀取了。

>>>f = open('text.txt', 'w+')

>>>f.write('aaa')

>>>f.seek(0)

>>>f.read()

'aaa'

>>>f.close()

#wb

>>>f = open('text.txt', 'wb')

>>>f.write(b'aaa')

>>>f.close()

>>>f = open('text.txt', 'r')

>>>f.read()

'aaa'

>>>f.close()

#wb+

>>>f = open('text.txt', 'wb+')

>>>f.write(b'aaa')

>>>f.seek(0)

>>>f.read()

b'aaa'

>>>f.close()

§ 實例3 - 'a','a+','ab','ab+'模式

#text.txt原本內(nèi)容為“abcdefg1234567”。

#a

#由于a是只寫模式,所以寫入完畢后還得再打開一次才能讀取到內(nèi)容。

>>>f = open('text.txt', 'a')

>>>f.write('aaa')

>>>f.close()

>>>f = open('text.txt', 'r')

>>>f.read()

'abcdefg1234567aaa'

>>>f.close()

#a+

#這樣就可以追加然后又讀取了。

>>>f = open('text.txt', 'a+')

>>>f.write('aaa')

>>>f.seek(0)

>>>f.read()

'abcdefg1234567aaa'

>>>f.close()

#ab

>>>f = open('text.txt', 'ab')

>>>f.write(b'aaa')

>>>f.close()

>>>f = open('text.txt', 'r')

>>>f.read()

'abcdefg1234567aaa'

>>>f.close()

#ab+

>>>f = open('text.txt', 'ab+')

>>>f.write(b'aaa')

>>>f.seek(0)

>>>f.read()

b'abcdefg1234567aaaaaa'

>>>f.close()

§ 實例4 - 'x'模式

#假設text.txt是存在的。

#由于text.txt是不存在的,所以順利執(zhí)行了。我們再執(zhí)行一次試試。

>>>f = open('text.txt', 'x')

>>>f.write('abc')

>>>f.close()

>>>f = open('text.txt', 'r')

>>>f.read()

'abc'

>>>f.close()

#就會執(zhí)行報錯了。提示text.txt文件已經(jīng)存在了。用x可以防止文件被覆蓋或修改,只能一次性創(chuàng)建并寫入內(nèi)容。

>>>f = open('text.txt', 'x')

FileExistsError: [Errno 17] File exists: 'text.txt'

總結(jié)

以上是生活随笔為你收集整理的python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。