iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Python

在AWS上進行物聯網與人工智慧實作系列 第 9

D09-使用 MicroPython 檔案存取 - io

  • 分享至 

  • xImage
  •  

使用 MicroPython 檔案存取 - io

目錄

本次的範例中會使用到 ESP32-CAM 的檔案存取、燈號控制、Wi-Fi、時間、拍照、網路等功能,接下來會逐步介紹如何使用這些功能。

MicroPython 函式庫說明

MicroPython 提供 Python 標準函式庫功能的內建模塊(例如 os、time)以及 MicroPython 特定的模塊(例如 bluetooth, machine)。大多數標準函式庫模塊實現了等效 Python 模塊的一部分功能,並且在少數情況下提供了一些 MicroPython 特定的擴展(例如 array, os),但由於資源限制或其他限制,某些韌體版本可能不包括官方手冊的所有功能。

以下 Python 的標準函式庫已經過「微化」以適應 MicroPython 的理念,它們提供該模塊的核心功能,旨在成為標準 Python 庫的直接替代品。

  • array – 數字數據的陣列
  • binascii – 二進制/ASCII 轉換
  • builtins – 內建函數和異常
  • cmath – 複數的數學函數
  • collections – 集合和容器類型
  • errno – 系統錯誤代碼
  • gc – 控制垃圾收集器
  • hashlib – 雜湊算法
  • heapq – 堆隊列算法
  • io – 輸入/輸出流
  • json – JSON 編碼和解碼
  • math – 數學函數
  • os – 基本的「操作系統」服務
  • random – 生成隨機數
  • re – 簡單的正則表達式
  • select – 等待一組流上的事件
  • socket – 網絡插座模塊
  • ssl – SSL/TLS 模塊
  • struct – 打包和解包原始數據類型
  • sys – 系統特定的功能
  • time – 時間相關函數
  • uasyncio — 異步 I/O 調度程序
  • zlib – zlib 解壓
  • _thread – 多線程支持

原則上,標準模塊都實現了相應 CPython 模塊的一個子集,有關更多信息,可以參閱原始 CPython 文檔。CPython 是 Python 編程語言的參考實現,也是最著名的一種。然而,它是眾多實現中的一種(包括 Jython、IronPython、PyPy 和 MicroPython)。雖然 MicroPython 的實現與 CPython 有很大不同,但它旨在盡可能保持兼容性。

io – 輸入/輸出

io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
打開一個檔案,並返回檔案物件,使用 open() 方法一定要保證關閉檔案物件,即呼叫 close() 方法。所有移植物件(port)都需要支持模式參數(mode),但對其他參數的支持因移植物件而異。

參數說明:

  • file: 必需,檔案路徑(相對或者絕對路徑)。
  • mode: 可選,檔案打開模式
  • buffering: 設置緩衝
  • encoding: 一般使用utf8
  • errors: 報錯級別
  • newline: 區分換行符
  • closefd: 傳入的file參數類型
  • opener: 設置自定義開啓器,開啓器的返回值必須是一個打開的檔案描述符。

表 1. open() 打開模式(mode)

參數 描述
r 以只讀方式開啓(默認)
w 以寫入方式打開檔案,會覆蓋已存在的檔案
x 如果檔案已經存在,會引發異常
a 以寫入方式打開檔案,已末尾追加方式寫入
b 以二進制模式打開檔案
t 以文本模式打開(默認)
+ 可讀寫模式
U 通用換行符支持

表 2. 檔案物件常見的方法

方法 描述
close() 關閉檔案
read(size=-1) 從檔案讀取size個字符,未給定size或給定負值,會讀取剩餘的所有字符,回傳字符串
readline() 讀取一行
write(str) 將字符串str寫入檔案
writelines(seq) 向檔案寫入字符串序列seq,seq是一個返回字符串的可迭代物件
seek(offset, from) 在檔案中移動檔案指針,從from(0-檔案起始位置,1-當前位置,2-檔案末尾)偏移offset個字節
tell() 返回檔案指針所在字節數

以下為寫入一個檔案,再將數據讀取出來。
參考代碼

import io
f = open('myfile.txt', 'w')
f.write('''Jupyter 是基於網頁的用於交互計算的應用程序,
可被應用於全過程計算:開發、文檔編寫、
運行代碼和展示結果。''')
f.close()

f = open('myfile.txt')
print(f.read())
f.close()

輸出結果為:

151
Jupyter 是基於網頁的用於交互計算的應用程序,
可被應用於全過程計算:開發、文檔編寫、
運行代碼和展示結果。

下圖是使用 Thonny 的執行結果

  1. 將程式碼儲存在 MicroPython 設備(ESP32-CAM) 中
  2. 點擊執行按鈕後,可以在下方視窗看到結果。

https://ithelp.ithome.com.tw/upload/images/20240816/20129510XK98KgVYrJ.png
圖 1. 使用Thonny執行結果

可以在上方工具列上的選擇 檢視->檔案,就會出現左方的檔案窗格
https://ithelp.ithome.com.tw/upload/images/20240816/20129510zHCd6qR0C3.png
圖 2. 顯示左方的檔案窗格

參考資料


上一篇
D08-使用 MicroPython 開發 ESP32-CAM - 使用圖形化工具 Thonny (Windows)
下一篇
D10-使用 MicroPython 控制燈號、撰寫 ISR - machine
系列文
在AWS上進行物聯網與人工智慧實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言