程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

24.Python面向對象—文件

編輯:Python

文章目錄

    • 01. 文件的概念
      • 1.1 文件的概念和作用
      • 1.2 文件的存儲方式
        • 文本文件和二進制文件
    • 02. 文件的基本操作
      • 2.1 操作文件的套路
      • 2.2 操作文件的函數/方法
      • 2.3 read 方法 —— 讀取文件
        • 文件指針(知道)
      • 2.4 打開文件的方式
      • 2.5 按行讀取文件內容
        • `readline` 方法
      • 2.6 文件讀寫案例 —— 復制文件
        • 小文件復制
        • 大文件復制
    • 03. 文件/目錄的常用管理操作
      • 文件操作
      • 目錄操作
    • 04. 文本文件的編碼格式(科普)
      • 4.1 ASCII 編碼和 UNICODE 編碼
        • `ASCII` 編碼
        • `UTF-8` 編碼格式
      • 4.2 Ptyhon 2.x 中如何使用中文
        • unicode 字符串

01. 文件的概念

1.1 文件的概念和作用

  • 計算機的 文件,就是存儲在某種 長期儲存設備 上的一段 數據
  • 長期存儲設備包括:硬盤、U 盤、移動硬盤、光盤…

文件的作用

將數據長期保存下來,在需要的時候使用

1.2 文件的存儲方式

  • 在計算機中,文件是以 二進制 的方式保存在磁盤上的

文本文件和二進制文件

  • 文本文件

    • 可以使用 文本編輯軟件 查看
    • 本質上還是二進制文件
    • 例如:python 的源程序
  • 二進制文件

    • 保存的內容 不是給人直接閱讀的,而是 提供給其他軟件使用的
    • 例如:圖片文件、音頻文件、視頻文件等等
    • 二進制文件不能使用 文本編輯軟件 查看

02. 文件的基本操作

2.1 操作文件的套路

計算機 中要操作文件的套路非常固定,一共包含三個步驟

  1. 打開文件
  2. 讀、寫文件
    • 將文件內容讀入內存
    • 將內存內容寫入文件
  3. 關閉文件

2.2 操作文件的函數/方法

  • Python 中要操作文件需要記住 1 個函數和 3 個方法
序號函數/方法說明01open打開文件,並且返回文件操作對象02read將文件內容讀取到內存03write將指定內容寫入文件04close關閉文件
  • open 函數負責打開文件,並且返回文件對象
  • read/write/close 三個方法都需要通過 文件對象 來調用

2.3 read 方法 —— 讀取文件

  • open 函數的第一個參數是要打開的文件名(文件名區分大小寫)
    • 如果文件 存在,返回 文件操作對象
    • 如果文件 不存在,會 拋出異常
  • read 方法可以一次性 讀入返回 文件的 所有內容
  • close 方法負責 關閉文件
    • 如果 忘記關閉文件會造成系統資源消耗,而且會影響到後續對文件的訪問
  • 注意read 方法執行後,會把 文件指針 移動到 文件的末尾
# 1. 打開 - 文件名需要注意大小寫
file = open("README")
# 2. 讀取
text = file.read()
print(text)
# 3. 關閉
file.close()

提示

  • 在開發中,通常會先編寫 打開關閉 的代碼,再編寫中間針對文件的 讀/寫 操作!

文件指針(知道)

  • 文件指針 標記 從哪個位置開始讀取數據
  • 第一次打開 文件時,通常 文件指針會指向文件的開始位置
  • 當執行了 read 方法後,文件指針 會移動到 讀取內容的末尾
    • 默認情況下會移動到 文件末尾

思考

  • 如果執行了一次 read 方法,讀取了所有內容,那麼再次調用 read 方法,還能夠獲得到內容嗎?

答案

  • 不能
  • 第一次讀取之後,文件指針移動到了文件末尾,再次調用不會讀取到任何的內容

2.4 打開文件的方式

  • open 函數默認以 只讀方式 打開文件,並且返回文件對象

語法如下:

f = open("文件名", "訪問方式")
訪問方式說明r以只讀方式打開文件。文件的指針將會放在文件的開頭,這是默認模式。如果文件不存在,拋出異常w以只寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創建新文件a以追加方式打開文件。如果該文件已存在,文件指針將會放在文件的結尾。如果文件不存在,創建新文件進行寫入r+以讀寫方式打開文件。文件的指針將會放在文件的開頭。如果文件不存在,拋出異常w+以讀寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創建新文件a+以讀寫方式打開文件。如果該文件已存在,文件指針將會放在文件的結尾。如果文件不存在,創建新文件進行寫入

提示

  • 頻繁的移動文件指針,會影響文件的讀寫效率,開發中更多的時候會以 只讀只寫 的方式來操作文件

寫入文件示例

# 打開文件
f = open("README", "w")
f.write("hello python!\n")
f.write("今天天氣真好")
# 關閉文件
f.close()

2.5 按行讀取文件內容

  • read 方法默認會把文件的 所有內容一次性讀取到內存
  • 如果文件太大,對內存的占用會非常嚴重

readline 方法

  • readline 方法可以一次讀取一行內容
  • 方法執行後,會把 文件指針 移動到下一行,准備再次讀取

讀取大文件的正確姿勢

# 打開文件
file = open("README")
while True:
# 讀取一行內容
text = file.readline()
# 判斷是否讀到內容
if not text:
break
# 每讀取一行的末尾已經有了一個 `\n`
print(text, end="")
# 關閉文件
file.close()

2.6 文件讀寫案例 —— 復制文件

目標

用代碼的方式,來實現文件復制過程

小文件復制

  • 打開一個已有文件,讀取完整內容,並寫入到另外一個文件
# 1. 打開文件
file_read = open("README")
file_write = open("README[復件]", "w")
# 2. 讀取並寫入文件
text = file_read.read()
file_write.write(text)
# 3. 關閉文件
file_read.close()
file_write.close()

大文件復制

  • 打開一個已有文件,逐行讀取內容,並順序寫入到另外一個文件
# 1. 打開文件
file_read = open("README")
file_write = open("README[復件]", "w")
# 2. 讀取並寫入文件
while True:
# 每次讀取一行
text = file_read.readline()
# 判斷是否讀取到內容
if not text:
break
file_write.write(text)
# 3. 關閉文件
file_read.close()
file_write.close()

03. 文件/目錄的常用管理操作

  • 終端 / 文件浏覽器、 中可以執行常規的 文件 / 目錄 管理操作,例如:
    • 創建、重命名、刪除、改變路徑、查看目錄內容、……
  • Python 中,如果希望通過程序實現上述功能,需要導入 os 模塊

文件操作

序號方法名說明示例01rename重命名文件os.rename(源文件名, 目標文件名)02remove刪除文件os.remove(文件名)

目錄操作

序號方法名說明示例01listdir目錄列表os.listdir(目錄名)02mkdir創建目錄os.mkdir(目錄名)03rmdir刪除目錄os.rmdir(目錄名)04getcwd獲取當前目錄os.getcwd()05chdir修改工作目錄os.chdir(目標目錄)06path.isdir判斷是否是文件os.path.isdir(文件路徑)

提示:文件或者目錄操作都支持 相對路徑絕對路徑

04. 文本文件的編碼格式(科普)

  • 文本文件存儲的內容是基於 字符編碼 的文件,常見的編碼有 ASCII 編碼,UNICODE 編碼等

Python 2.x 默認使用 ASCII 編碼格式
Python 3.x 默認使用 UTF-8 編碼格式

4.1 ASCII 編碼和 UNICODE 編碼

ASCII 編碼

  • 計算機中只有 256ASCII 字符
  • 一個 ASCII 在內存中占用 1 個字節 的空間
    • 80/1 的排列組合方式一共有 256 種,也就是 2 ** 8

UTF-8 編碼格式

  • 計算機中使用 1~6 個字節 來表示一個 UTF-8 字符,涵蓋了 地球上幾乎所有地區的文字
  • 大多數漢字會使用 3 個字節 表示
  • UTF-8UNICODE 編碼的一種編碼格式

4.2 Ptyhon 2.x 中如何使用中文

Python 2.x 默認使用 ASCII 編碼格式
Python 3.x 默認使用 UTF-8 編碼格式

  • 在 Python 2.x 文件的 第一行 增加以下代碼,解釋器會以 utf-8 編碼來處理 python 文件
# *-* coding:utf8 *-*

這方式是官方推薦使用的!

  • 也可以使用
# coding=utf8

unicode 字符串

  • Python 2.x 中,即使指定了文件使用 UTF-8 的編碼格式,但是在遍歷字符串時,仍然會 以字節為單位遍歷 字符串
  • 要能夠 正確的遍歷字符串,在定義字符串時,需要 在字符串的引號前,增加一個小寫字母 u,告訴解釋器這是一個 unicode 字符串(使用 UTF-8 編碼格式的字符串)
# *-* coding:utf8 *-*
# 在字符串前,增加一個 `u` 表示這個字符串是一個 utf8 字符串
hello_str = u"你好世界"
print(hello_str)
for c in hello_str:
print(c)

-8` 的編碼格式,但是在遍歷字符串時,仍然會 以字節為單位遍歷 字符串

  • 要能夠 正確的遍歷字符串,在定義字符串時,需要 在字符串的引號前,增加一個小寫字母 u,告訴解釋器這是一個 unicode 字符串(使用 UTF-8 編碼格式的字符串)
# *-* coding:utf8 *-*
# 在字符串前,增加一個 `u` 表示這個字符串是一個 utf8 字符串
hello_str = u"你好世界"
print(hello_str)
for c in hello_str:
print(c)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved