雖然視頻、音頻和圖片在硬盤中也是用二進制存儲的,但是上一章節講的字符編碼只和文本文件有關,因為‘utf-8’格式的編碼並不使用視頻,視頻有其本身的編碼格式,如MP4、avi、mkv等。
一、什么是文件?
文件是操作系統為用戶或應用程序提供的一個讀寫硬盤的虛擬單位。文件的操作是基於文件,即文件的操作核心就是:讀和寫。也
就是只要我們想要操作文件就是對操作系統發起請求,然后由操作系統將用戶或應用程序對文件的讀寫操作轉換成集體的硬盤指令(比如控制盤片轉動,控制機械手臂移動,以此來讀取數據)。
二、為什么要有文件?
內存無法永久保存數據,但凡我們想要永久保存數據都需要把文件保存到硬盤中,而操作文件就可以實現對硬件的操作。
三、如何用文件?
現在我們有一個需求需要把用戶輸入的賬號密碼存儲到硬盤中,我們使用Python該如何操作呢?
name = 'nick'
pwd = '123'
3.1 從硬盤中讀取數據
如果我們需要打開一個文件,需要向操作系統發起請求,要求操作系統打開文件,占用操作系統資源。Python中使用open()方法可以打開某個具體的文件,open()方法內寫入文件路徑。
open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt')
如果給列表增加值,我們需要給列表賦值后才能給對應的列表增加值。文件也是如此。
lis = [1,2,3]
lis.append(4)
lis.append(5)
# 打開文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt')
print(f)
<_io.TextIOWrapper name='/Users/mac/desktop/jupyter/pythonCourseware/32.txt' mode='r' encoding='UTF-8'>
打開文件之后,文件不僅占用了內存,他還對應了操作系統打開的以文件,相當於使用文本編輯器打開了一個文件。並且我們說了我們操控文件只是為了讀和寫,因此打開文件並不是目的,讀和寫才是目的,接下來我們嘗試如何讀寫文件。
# read模式打開文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='r')
# 讀取文件內容,向操作系統發起讀請求,會被操作系統轉成具體的硬盤操作,將內容由硬盤讀入內存
data = f.read()
print(data)
# 由於Python的垃圾回收機制只回收引用計數為0的變量,但是打開文件還占用操作系統的資源,所以我們需要回收操作系統的資源資源
# del f 只是回收變量f
f.close()
name = 'nick'
pwd = '123'
3.2 寫入數據
# write模式打開文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='w')
f.write("""name = 'nick'
pwd = '123'""")
f.close()
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='r')
data = f.read()
print(data)
name = 'nick'
pwd = '123'
四、總結
打開文件總而言之分為三步:
- 打開文件
- 讀寫
- 關閉