2.1.
創建文件對象
**open()
函數用于創建文件對象,基本語法格式如下:** open(文件名[,打開方式])
注意:
-
如果只是文件名,代表在當前目錄下的文件.
文件名可以錄入全路徑,比如:
D:\\a\\b.txt
可以使用原始字符串r“d:\\b.txt”
減少\\
的輸入 ,因此以上代碼可改寫成
f = open(r"d:\\b.txt","w")
-
作為入參的打開方式如下(經常會用!!!)
-
文本文件對象和二進制文件對象的創建如果是二進制模式
b ,則創建的是二進制文件對象,處理的基本單元是“字節” 如果沒有增加模式 b
,則默認創建的是文本文件對象,處理的基本單元是“字符”
2.2.
文件的寫入
文本文件的寫入一般就是三個步驟:
- 創建文件對象
- 寫入數據
- 關閉文件對象
基本文件的寫入操作
實操代碼
# 1.使用open()方式
f = open(r"d:\\a.txt", "a")
s = "TimePause\\n時間靜止\\n"
f.write(s)
f.close()
結果展示
中文亂碼
代碼編寫時
windows
操作系統默認的編碼是 GBK , Linux 操作系統默認的編碼是 UTF- 8 .**當我們用
open() 時,調用的是操作系統相關api來打開的文件,并且默認的編碼是 GBK 但是由于我們通常習慣將所有代碼編碼都設置成 UTF- 8 .,
因此在打開時會出現亂碼問題, 如下圖所示**
解決方案: 按照上圖提示,
將文本編碼設置成 GBK格式讀取即可注意: 我們還可以通過指定編碼來解決中文亂碼問題.
因為我們將pycharm
文本讀寫編碼都設置成
utf-8, 因此只要 **我們在文件寫入的時候規定編碼為
utf-8(默認gbk)** , 那么我們在讀取時就不會出現亂碼. 如下代碼
實操代碼
# 【示例】通過指定文件編碼解決中文亂碼問題
f = open(r"d:\\bb.txt", "w", encoding="utf-8")
f.write("一個有溫情的小站\\n時間靜止不是簡史")
f.close()
控制臺輸出時****問題描述
我們一般習慣把pycharm所有字符編碼設置成utf-8時.
在我們進行網絡請求時, 有時候會返回亂碼問題, 如下圖
問題分析
因為我們在
pycharm 設置所有字符編碼均為 UTF-8, 但是**通過網絡請求得到GBK格式的文本,
然后我們仍以 UTF-8 編碼去解碼就會出現亂碼**
解決方案
可以將項目編碼設置成GBK格式即可;
也可以通過文本操作代碼對得到的數據進行GBK格式讀取 亦或者在寫入時, 直接將編碼聲明為UTF-8
write()/writelines()寫入數據
-
write(a)
:把字符串a 寫入到文件中
-
writelines(b)
:把字符串列表寫入文件中,不添加換行符
實操代碼
# 【操作】添加字符串列表數據到文件中
f = open(r"d:\\bb.txt", 'w', encoding="utf-8")
s = ["什么鬼\\n"] * 3 # 通過 \\n實現手動換行
f.writelines(s)
f.close()
close()關閉文件流
由于文件底層是由操作系統控制,所以我們打開的文件對象必須顯式調用
close() 方法關閉文件對象. 當調用 close() 方法時,首先會把緩沖區數據寫入文件(也可以直接調用 flush()
方法),再關閉文件,釋放文件對象
注意:
-
close()
一般結合異常機制的finally 一起使用
-
也可以**通過
with 關鍵字實現無論何種情況都能關閉打開的文件對象(推薦)**
實操代碼
# 【操作】結合異常機制的 finally ,確保關閉文件對象
# "a" 設置打開方式為追加模式
try:
f = open(r"d:\\c.txt", "a")
s = "來自深淵"
f.write(s)
except BaseException as e:
print(e)
finally:
f.close()
with語句(上下文管理器)
with關鍵字
(上下文管理器)可以自動管理上下文資源,不論什么原因跳出 with塊 ,都能確保文件正確的關閉,
并且可以在代碼塊執行完畢后自動還原進入該代碼塊時的現場
實操代碼
# 【操作】使用 with 管理文件寫入操作
s = ["齊格飛"] * 3
with open(r"d:\\cc.txt", "w") as f:
f.writelines(s)
-
函數
+關注
關注
3文章
4346瀏覽量
63012 -
python
+關注
關注
56文章
4810瀏覽量
85074
發布評論請先 登錄
相關推薦
《Visual C# 2008程序設計經典案例設計與實現》---動態創建文件并輸入文件內容
labview中在創建文件函數時出現 memory is full 的問題
請問FATFS創建文件夾時如何添加創建時間?
如何設置一個路徑創建文件并寫入數據?
DFS創建文件失敗是為什么
為什么用DFS創建文件會失敗呢?
dos命令怎么用_DOS下創建文件、文件夾
![dos命令怎么用_DOS下<b class='flag-5'>創建文件</b>、<b class='flag-5'>文件</b>夾](https://file.elecfans.com/web1/M00/45/05/pIYBAFpfBlmAIIq1AAA9gWs-ndg373.png)
在Linux中如何創建文件
![在Linux中如何<b class='flag-5'>創建文件</b>](https://file.elecfans.com/web1/M00/BD/D8/pIYBAF7TBfqAE93vAAAyt473r8E431.jpg)
淺析python模塊創建和from及import使用
介紹Python中文件創建與寫入的基本方法
如何用Python轉移文件至云對象存儲
![如何用<b class='flag-5'>Python</b>轉移<b class='flag-5'>文件</b>至云<b class='flag-5'>對象</b>存儲](https://file1.elecfans.com/web2/M00/AB/7D/wKgaomVAZNiACWNjAAAzLl9VLgQ074.jpg)
評論