2.1.
創(chuàng)建文件對(duì)象
**open()
函數(shù)用于創(chuàng)建文件對(duì)象,基本語法格式如下:** open(文件名[,打開方式])
注意:
-
如果只是文件名,代表在當(dāng)前目錄下的文件.
文件名可以錄入全路徑,比如:
D:\\a\\b.txt
可以使用原始字符串r“d:\\b.txt”
減少\\
的輸入 ,因此以上代碼可改寫成
f = open(r"d:\\b.txt","w")
-
作為入?yún)⒌拇蜷_方式如下(經(jīng)常會(huì)用!!!)
-
文本文件對(duì)象和二進(jìn)制文件對(duì)象的創(chuàng)建如果是二進(jìn)制模式
b ,則創(chuàng)建的是二進(jìn)制文件對(duì)象,處理的基本單元是“字節(jié)” 如果沒有增加模式 b
,則默認(rèn)創(chuàng)建的是文本文件對(duì)象,處理的基本單元是“字符”
2.2.
文件的寫入
文本文件的寫入一般就是三個(gè)步驟:
- 創(chuàng)建文件對(duì)象
- 寫入數(shù)據(jù)
- 關(guān)閉文件對(duì)象
基本文件的寫入操作
實(shí)操代碼
# 1.使用open()方式
f = open(r"d:\\a.txt", "a")
s = "TimePause\\n時(shí)間靜止\\n"
f.write(s)
f.close()
結(jié)果展示
中文亂碼
代碼編寫時(shí)
windows
操作系統(tǒng)默認(rèn)的編碼是 GBK , Linux 操作系統(tǒng)默認(rèn)的編碼是 UTF- 8 .**當(dāng)我們用
open() 時(shí),調(diào)用的是操作系統(tǒng)相關(guān)api來打開的文件,并且默認(rèn)的編碼是 GBK 但是由于我們通常習(xí)慣將所有代碼編碼都設(shè)置成 UTF- 8 .,
因此在打開時(shí)會(huì)出現(xiàn)亂碼問題, 如下圖所示**
解決方案: 按照上圖提示,
將文本編碼設(shè)置成 GBK格式讀取即可注意: 我們還可以通過指定編碼來解決中文亂碼問題.
因?yàn)槲覀儗?code>pycharm文本讀寫編碼都設(shè)置成
utf-8, 因此只要 **我們?cè)谖募懭氲臅r(shí)候規(guī)定編碼為
utf-8(默認(rèn)gbk)** , 那么我們?cè)谧x取時(shí)就不會(huì)出現(xiàn)亂碼. 如下代碼
實(shí)操代碼
# 【示例】通過指定文件編碼解決中文亂碼問題
f = open(r"d:\\bb.txt", "w", encoding="utf-8")
f.write("一個(gè)有溫情的小站\\n時(shí)間靜止不是簡(jiǎn)史")
f.close()
控制臺(tái)輸出時(shí)****問題描述
我們一般習(xí)慣把pycharm所有字符編碼設(shè)置成utf-8時(shí).
在我們進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí), 有時(shí)候會(huì)返回亂碼問題, 如下圖
問題分析
因?yàn)槲覀冊(cè)?/p>
pycharm 設(shè)置所有字符編碼均為 UTF-8, 但是**通過網(wǎng)絡(luò)請(qǐng)求得到GBK格式的文本,
然后我們?nèi)砸?UTF-8 編碼去解碼就會(huì)出現(xiàn)亂碼**
解決方案
可以將項(xiàng)目編碼設(shè)置成GBK格式即可;
也可以通過文本操作代碼對(duì)得到的數(shù)據(jù)進(jìn)行GBK格式讀取 亦或者在寫入時(shí), 直接將編碼聲明為UTF-8
write()/writelines()寫入數(shù)據(jù)
-
write(a)
:把字符串a 寫入到文件中
-
writelines(b)
:把字符串列表寫入文件中,不添加換行符
實(shí)操代碼
# 【操作】添加字符串列表數(shù)據(jù)到文件中
f = open(r"d:\\bb.txt", 'w', encoding="utf-8")
s = ["什么鬼\\n"] * 3 # 通過 \\n實(shí)現(xiàn)手動(dòng)換行
f.writelines(s)
f.close()
close()關(guān)閉文件流
由于文件底層是由操作系統(tǒng)控制,所以我們打開的文件對(duì)象必須顯式調(diào)用
close() 方法關(guān)閉文件對(duì)象. 當(dāng)調(diào)用 close() 方法時(shí),首先會(huì)把緩沖區(qū)數(shù)據(jù)寫入文件(也可以直接調(diào)用 flush()
方法),再關(guān)閉文件,釋放文件對(duì)象
注意:
-
close()
一般結(jié)合異常機(jī)制的finally 一起使用
-
也可以**通過
with 關(guān)鍵字實(shí)現(xiàn)無論何種情況都能關(guān)閉打開的文件對(duì)象(推薦)**
實(shí)操代碼
# 【操作】結(jié)合異常機(jī)制的 finally ,確保關(guān)閉文件對(duì)象
# "a" 設(shè)置打開方式為追加模式
try:
f = open(r"d:\\c.txt", "a")
s = "來自深淵"
f.write(s)
except BaseException as e:
print(e)
finally:
f.close()
with語句(上下文管理器)
with關(guān)鍵字
(上下文管理器)可以自動(dòng)管理上下文資源,不論什么原因跳出 with塊 ,都能確保文件正確的關(guān)閉,
并且可以在代碼塊執(zhí)行完畢后自動(dòng)還原進(jìn)入該代碼塊時(shí)的現(xiàn)場(chǎng)
實(shí)操代碼
# 【操作】使用 with 管理文件寫入操作
s = ["齊格飛"] * 3
with open(r"d:\\cc.txt", "w") as f:
f.writelines(s)
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4260瀏覽量
62228 -
python
+關(guān)注
關(guān)注
54文章
4758瀏覽量
84289
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論