亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python?open讀取文件內容時的mode模式實例分析

發布時間:2022-05-16 09:22:14 來源:億速云 閱讀:239 作者:zzz 欄目:開發技術

今天小編給大家分享一下python open讀取文件內容時的mode模式實例分析的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Python可以使用open函數來實現文件的打開,關閉,讀寫操作;

Python3中的open函數定義為:open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)其中mode列表為:
'r' #open for reading (default)
'w' #open for writing, truncating the file first
'x' #create a new file and open it for writing,python3新增
'a' #open for writing, appending to the end of the file if it exists
'b' #binary mode
't' #text mode (default),python3新增
'+' #open a disk file for updating (reading and writing)
'U' #universal newline mode (deprecated)

這里我們主要關心一下'r', 'w', 'a', 'r+', 'w+', 'a+', 'x',很多人容易混淆不同模式的讀寫操作

'r'

只讀模式,open函數中mode參數的默認模式,文件不存在的話,報FileNotFoundError(python2是IOError);
文件打開后,初始游標位置為0;
每次讀都是從游標位置開始讀;
如果進行了寫操作,會報如下異常:
io.UnsupportedOperation: not writable

'w'

只寫模式,文件不存在的話,創建文件;文件存在的話,首先清空文件,然后開始寫;
文件打開后,初始游標位置為0;
每次寫都是從游標位置開始寫;
如果進行了讀操作,首先文件也會被清空,會報如下異常:
io.UnsupportedOperation: not readable

'a'

追加模式,文件不存在話,創建文件;文件存在的話,不會清空文件;
文件打開后,初始游標位置為文件結尾;
每次寫都是從結尾開始寫;
如果進行了讀操作,同時報如下異常:
io.UnsupportedOperation: not readable

上面的比較好理解,下面就有點繞了

'r+'

讀寫模式,文件不存在的話,報FileNotFoundError(python2是IOError);
文件打開后,初始游標位置為0;
每次讀寫都是從游標位置開始;但是對于寫操作,類似于替換操作;
看如下代碼:
文件內容為:abcdefg
代碼內容為:

f = open('open_mode.txt', 'r+')
f.write('xyz')
f.close()

運行代碼后,文件內容變為:xyzdefg

'w+'

只寫模式,文件不存在的話,創建文件;文件存在的話,首先清空文件;
文件打開后,初始游標位置為0;
每次讀寫都是從游標位置開始;寫操作,類似于替換操作;

'a+'

追加模式,文件不存在話,創建文件;文件存在的話,不會清空文件;
文件打開后,初始游標位置為文件結尾;
每次寫都是從結尾開始寫;
讀操作從游標位置開始;

'x'

python3新加
創建文件并寫操作,操作必須是不存在的文件,如果操作的文件已存在,則報錯FileExistsError
不可讀,如果進行了讀操作,同時報如下異常:
io.UnsupportedOperation: not readable

'b'

二進制形式讀寫文件;
寫數據時,寫入的數據類型必須為字符串類型,其他類型必須通過json(就是符合json格式的字符串)寫入
python2與python3對于'b’ mode的行為不同,這和python2與python3的字符串類型有關;事實上,python的字符串類型有兩種;
Python2的兩種字符串類型,分別叫做str和Unicode,str實例包含原始的8位值;而unicode的實例,則包含Unicode字符。
Python2的兩種字符串類型,分別叫做byte和str,與python2不同的是,byte實例包含原始的8位值;而str的實例,則包含Unicode字符。
當讀寫文件采用'b'的模式時,要求必須以二進制形式讀寫,在python2中,字符串必須為str字符串,python3中必須為byte字符串;所以在python3,'b'模式下這樣讀寫字符串

s = b'hello world!' #注意是byte字符串
f = open('open_mode.txt','wb')
f.write(s)

或:

s = 'hello world!'f= open('open_mode.txt','wb')
f.write(s.encode(encoding='utf-8'))

不然會報如下錯誤:

Traceback (most recent call last):
File"C:/Users/Desktop/Python/cnblogs/數據類型.py", line 125, in f.write(s)
TypeError: a bytes-like object is required, not 'str'

以上就是“python open讀取文件內容時的mode模式實例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

哈尔滨市| 田林县| 延川县| 界首市| 阿拉善左旗| 龙南县| 砚山县| 禹州市| 松原市| 井冈山市| 定远县| 双峰县| 广丰县| 辰溪县| 承德县| 上杭县| 和龙市| 涿州市| 虞城县| 陇川县| 泗水县| 重庆市| 开原市| 依安县| 武邑县| 霍州市| 托里县| 卢龙县| 定西市| 甘洛县| 射洪县| 剑阁县| 菏泽市| 外汇| 高台县| 华池县| 兴安县| 鄂托克前旗| 诸城市| 泸水县| 东山县|