python面向對象之模塊文件讀寫

2021-01-09 python大蛇

文件

目標

文件的概念 文件的基本操作 文件/文件夾的常用操作 文本文件的編碼方式

01. 文件的概念

1.1 文件的概念和作用

計算機的 文件,就是存儲在某種 長期儲存設備 上的一段 數據

長期存儲設備包括:硬碟、U 盤、移動硬碟、光碟...

文件的作用

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

CPU

內存

硬碟

1.2 文件的存儲方式

在計算機中,文件是以 二進位 的方式保存在磁碟上的

文本文件和二進位文件

文本文件

可以使用 文本編輯軟體 查看

本質上還是二進位文件

例如:python 的源程序

二進位文件

保存的內容 不是給人直接閱讀的,而是 提供給其他軟體使用的

例如:圖片文件、音頻文件、視頻文件等等

二進位文件不能使用 文本編輯軟體 查看

02. 文件的基本操作

2.1 操作文件的套路

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

1. 打開文件

2. 讀、寫文件

讀 將文件內容讀入內存

寫 將內存內容寫入文件

3. 關閉文件

2.2 操作文件的函數/方法

在 `Python` 中要操作文件需要記住 1 個函數和 3 個方法

| 序號 | 函數/方法 | 說明 |

| --- | --- | --- |

| 01 | open | 打開文件,並且返回文件操作對象 |

| 02 | read | 將文件內容讀取到內存 |

| 03 | write | 將指定內容寫入文件 |

| 04 | close | 關閉文件 |

`open` 函數負責打開文件,並且返回文件對象

`read`/`write`/`close` 三個方法都需要通過 文件對象 來調用

2.3 read 方法 —— 讀取文件

`open` 函數的第一個參數是要打開的文件名(文件名區分大小寫)

如果文件 存在,返回 文件操作對象

如果文件 不存在,會 拋出異常

`read` 方法可以一次性 讀入 並 返回 文件的 所有內容

`close` 方法負責 關閉文件

如果 忘記關閉文件,會造成系統資源消耗,而且會影響到後續對文件的訪問

注意:`read` 方法執行後,會把 文件指針 移動到 文件的末尾

```python

1. 打開 - 文件名需要注意大小寫

file = open("README")

2. 讀取

text = file.read()

print(text)

3. 關閉

file.close()

提示

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

文件指針(知道)

文件指針 標記 從哪個位置開始讀取數據

第一次打開 文件時,通常 文件指針會指向文件的開始位置

當執行了 `read` 方法後,文件指針 會移動到 讀取內容的末尾

默認情況下會移動到 文件末尾

思考

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

答案

不能

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

2.4 打開文件的方式

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

語法如下:

```python

f = open("文件名", "訪問方式")

| 訪問方式 | 說明 |

| :---: | --- |

| r | 以只讀方式打開文件。文件的指針將會放在文件的開頭,這是默認模式。如果文件不存在,拋出異常 |

| w | 以只寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創建新文件 |

| a | 以追加方式打開文件。如果該文件已存在,文件指針將會放在文件的結尾。如果文件不存在,創建新文件進行寫入 |

| r+ | 以讀寫方式打開文件。文件的指針將會放在文件的開頭。如果文件不存在,拋出異常 |

| w+ | 以讀寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創建新文件 |

| a+ | 以讀寫方式打開文件。如果該文件已存在,文件指針將會放在文件的結尾。如果文件不存在,創建新文件進行寫入 |

提示

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

寫入文件示例

```python

打開文件

f = open("README", "w")

f.write("hello python!\n")

f.write("今天天氣真好")

關閉文件

f.close()

2.5 按行讀取文件內容

`read` 方法默認會把文件的 所有內容 一次性讀取到內存

如果文件太大,對內存的佔用會非常嚴重

`readline` 方法

`readline` 方法可以一次讀取一行內容

方法執行後,會把 文件指針 移動到下一行,準備再次讀取

讀取大文件的正確姿勢

```python

打開文件

file = open("README")

while True:

讀取一行內容

text = file.readline()

判斷是否讀到內容

if not text:

break

每讀取一行的末尾已經有了一個 `\n`

print(text, end="")

關閉文件

file.close()

2.6 文件讀寫案例 —— 複製文件

目標

用代碼的方式,來實現文件複製過程

小文件複製

打開一個已有文件,讀取完整內容,並寫入到另外一個文件

```python

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()

大文件複製

打開一個已有文件,逐行讀取內容,並順序寫入到另外一個文件

```python

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` 模塊

文件操作

| 序號 | 方法名 | 說明 | 示例 |

| --- | --- | --- | --- |

| 01 | rename | 重命名文件 | `os.rename(源文件名, 目標文件名)` |

| 02 | remove | 刪除文件 | `os.remove(文件名)` |

目錄操作

| 序號 | 方法名 | 說明 | 示例 |

| --- | --- | --- | --- |

| 01 | listdir | 目錄列表 | `os.listdir(目錄名)` |

| 02 | mkdir | 創建目錄 | `os.mkdir(目錄名)` |

| 03 | rmdir | 刪除目錄 | `os.rmdir(目錄名)` |

| 04 | getcwd | 獲取當前目錄 | `os.getcwd()` |

| 05 | chdir | 修改工作目錄 | `os.chdir(目標目錄)` |

| 06 | path.isdir | 判斷是否是文件 | `os.path.isdir(文件路徑)`

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

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

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

> Python 2.x 默認使用 `ASCII` 編碼格式

> Python 3.x 默認使用 `UTF-8` 編碼格式

4.1 ASCII 編碼和 UNICODE 編碼

`ASCII` 編碼

計算機中只有 `256` 個 `ASCII` 字符

一個 `ASCII` 在內存中佔用 1 個字節 的空間

`8` 個 `0/1` 的排列組合方式一共有 `256` 種,也就是 `2 8`

`UTF-8` 編碼格式

計算機中使用 1~6 個字節 來表示一個 `UTF-8` 字符,涵蓋了 地球上幾乎所有地區的文字

大多數漢字會使用 3 個字節 表示

`UTF-8` 是 `UNICODE` 編碼的一種編碼格式

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

> Python 2.x 默認使用 `ASCII` 編碼格式

> Python 3.x 默認使用 `UTF-8` 編碼格式

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

```python

- coding:utf8 -

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

也可以使用

```python

coding=utf8

unicode 字符串

在 `Python 2.x` 中,即使指定了文件使用 `UTF-8` 的編碼格式,但是在遍歷字符串時,仍然會 以字節為單位遍歷 字符串

要能夠 正確的遍歷字符串,在定義字符串時,需要 在字符串的引號前,增加一個小寫字母 `u`,告訴解釋器這是一個 `unicode` 字符串(使用 `UTF-8` 編碼格式的字符串)

```python

- coding:utf8 -

在字符串前,增加一個 `u` 表示這個字符串是一個 utf8 字符串

hello_str = u"你好世界"

print(hello_str)

for c in hello_str:

print(c)

相關焦點

  • Python讀寫配置文件的實際操作步驟解析
    Python讀寫配置文件的實際操作步驟解析 本文主要講述的是python 讀寫配置文件的例子以及相關代碼的介紹,以及如何修改配置中的變量的值,以下是相關的介紹。
  • python進階教程之模塊進階
    >import hashlibm = hashlib.md5() #創建hash對象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一個128位的密文print m #<md5 HASH object>m.update('itcast') #更新哈希對象以字符串參數print
  • python裡讀寫excel等數據文件的幾種常用方式
    python處理數據文件第一步是要讀取數據,文件類型主要包括文本文件(csv、txt等)、excel下面整理下python有哪些方式可以讀取數據文件。1. python內置方法(read、readline、readlines)read() : 一次性讀取整個文件內容。
  • python3之如何讀寫文件
    文件的讀寫是在實際開發中經常會遇到的,因此掌握文件的讀寫是必須的。讀文件首先通過一個最簡單的例子感受一下python讀文件的函數。例子中只有兩行代碼,第一行代碼是調用open函數,參數是文件路徑,返回的是一個文件對象。
  • Python語法基礎(12)文件讀寫
    open()是python的內置函數,它會返回一個文件對象,這個文件對象擁有read、readline、write、close等方法。常用的模式:r:表示文件只能讀取w:表示文件只能寫入a:表示打開文件,在原有內容的基礎上追加內容,在末尾寫入w+:表示可以對文件進行讀寫雙重操作mode 參數可以省略不填,默認為 r 模式。
  • python使用with as處理文件的讀寫
    文件處理的兩種情況:1、忘記關閉文件。2、文件讀寫異常,未做處理。在python中使用with語句,可以自動調用close()方法,同時也解決了異常問題。with open('test.txt','w') as f:f.write('Hello, python!')python文件讀寫模式:r:以只讀方式打開文件,指針放到文件的開頭。rb:以二進位格式打開文件用於只讀,指針放到文件的開頭。r+:打開文件用於讀寫,指針放到文件的開頭。
  • python教程之十一面向對象
    面向對象技術簡介不管何種語言,我們都提倡採用面向對象思想編程。上節我們介紹了GUI界面,下面代碼採用tkinter庫實現登陸界面來解釋說明面向對象技術涉及到的幾個術語。1、類(Class): 具有相同屬性和方法的對象的集合。定義了Login類,類定義的語法為 class className:2、方法:類中定義的函數。
  • 詳解Python面向對象知識點
    目前代碼技能已經成了測試同學面試考核的剛需,對於測試開發來講需求最大的是java和python兩門語言,二者也都是面向對象語言。對於剛入門代碼的同學來說面向對象相關的概念比較難於理解,而面向對象編程相關的知識點偏偏又是面試中的高頻問題,所以本文我以python為例,帶大家快速搞定面向對象中的核心概念並通過代碼實現的方式來幫助大家對其加深理解!
  • Python基礎知識:快來了解一下文件的讀寫以及追加操作
    python的文件讀寫的函數是open(file, mode='r'),file是文件的路徑,mode是文件的操作模式,讀、寫、追加寫、寫入二級制數據,讀取二進位數據。那麼這麼多的模式怎麼記憶呢?其實很簡單的,r即read,w即write,二進位即binary,+表示追加數據更新文件。
  • 測試同學必須熟悉的python模塊
    測試同學在進行python的面試過程中,必問的問題是你最常用的python模塊有哪些?這些模塊解決了你工作中的哪些問題?在這裡我把測試同學在實際工作中常用的py模塊進行了匯總,本文編寫的目的是對各個模塊的功能進行概要介紹並沒有提供具體api的使用方法,如果大家想要深入了解各個模塊api的具體應用,勞煩自行利用網絡資源解決。
  • 「小白福利,快速入門Python」之處理文件
    歡迎關注公眾號【哈希大數據】python實例 合併文件並去重運行結果:"D:\anaconda python\python3.6.exe" D:/vernacular/coding_ziyi/merge_csv.py該文件下下一共有 6
  • python入門靈魂問題——python學習路線與教程
    一、python入門簡介對於剛接觸python編程或者想學習python自動化的人來說,基本都會有以下python入門靈魂問題--python學習路線,python教程,需要學習哪些內容才能徵服python這條蟒蛇呢?前言:Python分為2.x和3.x之分,2.x目前已經快被淘汰了就不要學了,直接學習3.x,目前最新的版本為3.8。
  • opencv-python獲取圖像:面向對象與面向過程
    下面是分別用面向過程與面向對象的編程方法實現讀取本地圖像和打開攝像頭兩段代碼:# -*- coding: utf-8 -*-"""面向過程的編程方法,用函數把解決問題的步驟一步一步實現。Esc 退出,窗口活動時有效breakcamera.release() #釋放攝像頭cv2.waitKey(0) #等待按下任意鍵,窗口活動時有效cv2.destroyAllWindows() #銷毀所有窗口# -*- coding: utf-8 -*-"""定義類,面向對象的編程方法
  • Python 中引入一個文件,模塊的概念
    在開發時,給文件起名,不要和系統的模塊文件重名。示例:import random D:\python\lib\random.py4、原則 —— 每一個文件都應該是可以被導入的一個獨立的 Python 文件就是一個模塊,在導入文件時,文件中所有沒有任何縮進的代碼都會被執行一遍!
  • Python利用openpyxl處理excel文件(openpyxl的安裝及簡介)
    但是試想,如果把上述excel公式變成諸如python中的if-else結構,其可讀性肯定是不容置疑的……今天,我們來介紹一款excel處理利器—openpyxl(python庫文件)。根據openpyxl官方文檔,結合個人近年來使用心得,總結openpyxl應用中以下幾個知識點:(一)openpyxl的安裝、導入及相關注意事項;(二)對excel文件的打開、讀寫、編輯、保存相關;(三)對excel文件中樣式的編輯;(四)對excel文件中單元格及行列的操作;(五)在excel文件中公式及圖表的簡單操作
  • 附實戰代碼|告別OS模塊,體驗Python文件操作新姿勢
    pathlib 是Python內置庫,Python 文檔給它的定義是:The pathlib module – object-oriented filesystem paths(面向對象的文件系統路徑)
  • python的文件操作
    在磁碟上讀寫文件的功能都是由作業系統提供的,現代作業系統不允許普通的程序直接操作磁碟,所以,讀寫文件就是請求作業系統打開一個文件對象,然後,通過作業系統提供的接口從這個文件對象中讀取數據,或者把數據寫入這個文件對象。
  • Python JSON模塊與JsonPath
    Python 2.7中自帶了JSON模塊,直接import json就可以使用了。官方文檔:http://docs.python.org/library/json.htmlJson在線解析網站:http://www.json.cn/#JSONjson簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種複雜的結構對象:對象在js中表示為{ }括起來的內容,
  • 用Python讀寫文件的方法
    圖書推薦:《Python大學實用教程》最適合零基礎入門讀物在文中,我們將研習如何用Python讀取文件,然後,向文件寫入內容並再次保存它。使用Python讀寫某種特別類型的文件,例如:JSON、CSV、Excel等,一般會有專門的模塊。
  • python文件讀寫方式
    1、讀寫模式的理解,前面文件講的很簡潔、很清晰,如果不太清楚可以點擊【】了解一下【r】解讀:必須有文件,從最開始讀【r+】解讀:必須有文件,從最開始讀,從最開始寫(覆蓋寫)【w】解讀:無文件創建,從最開始寫(清空寫)【w+】解讀:無文件創建,從最開始寫(清空寫),讀不到內容(因為w先清空內容了)【a