移遠QuecPython(基于EC600s)開發(fā)物聯(lián)網(wǎng)應用(五) micropython標準庫

一. uos - 基本系統(tǒng)服務

導入模塊

import uos

1. 獲取當前路徑

uos.getcwd()

2. 列出目錄文件

uos.listdir( [dir] )

沒有參數(shù)列出當前目錄文件,否則列出給定目錄的文件。dir為可選參數(shù),表示目錄名,默認為 ‘/’ 目錄。

3. 改變當前目錄

uos.chdir(path)

4. 創(chuàng)建一個新的目錄/文件

uos.mkdir(path)

創(chuàng)建一個新的目錄。path表示準備創(chuàng)建的目錄名。

5. 重命名目錄/文件

uos.rename(old_path, new_path)

重命名文件。old_path表示舊文件或目錄名,new_path表示新文件或目錄名。

6. 刪除指定目錄

uos.rmdir(path)

7. 刪除文件

uos.remove(path)

8. 文件/目錄 三元組(或四元組)迭代器

uos.ilistdir( [dir] )

dir為可選參數(shù),表示目錄名,沒有參數(shù)時,默認列出當前目錄,有參數(shù)時,則列出dir參數(shù)指定的目錄。
該函數(shù)返回一個迭代器,該迭代器會生成所列出條目對應的三元組(或者四元組,對EC600S來說是四元組)。

三元組(或四元組)結構(name, type, inode[, size]):

  • name 是條目的名稱,字符串類型,如果dir是字節(jié)對象,則名稱為字節(jié);
  • type 是條目的類型,整型數(shù),0x4000表示目錄,0x8000表示常規(guī)文件;
  • 是一個與文件的索引節(jié)點相對應的整數(shù),對于沒有這種概念的文件系統(tǒng)來說,可能為0;
  • 一些平臺可能會返回一個4元組,其中包含條目的size。對于文件條目,size表示文件大小的整數(shù),如果未知,則為-1。對于目錄項,其含義目前尚未定義。

例如:

import uos

print(uos.getcwd())

for item in uos.ilistdir():
  print(item)

9. 獲取文件或目錄的狀態(tài)

uos.stat(path)

獲取文件或目錄的狀態(tài)。path表示文件或目錄名。返回值是一個元組,返回值形式為:

(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)

mode – inode保護模式
ino – inode節(jié)點號
dev – inode駐留的設備
nlink – inode的鏈接數(shù)
uid – 所有者的用戶ID
gid – 所有者的組ID
size – 文件大小,單位字節(jié)
atime – 上次訪問的時間
mtime – 最后一次修改的時間
ctime – 操作系統(tǒng)報告的“ctime”,在某些系統(tǒng)上是最新的元數(shù)據(jù)更改的時間,在其它系統(tǒng)上是創(chuàng)建時間,詳細信息參見平臺文檔

這個我在EC600S上打印的數(shù)據(jù)不對, 沒深究

10. 獲取文件系統(tǒng)狀態(tài)信息

uos.statvfs(path)

path表示文件或目錄名。返回一個包含文件系統(tǒng)信息的元組

(f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax)

f_bsize – 文件系統(tǒng)塊大小,單位字節(jié)
f_frsize – 分棧大小,單位字節(jié)
f_blocks – 文件系統(tǒng)數(shù)據(jù)塊總數(shù)
f_bfree – 可用塊數(shù)
f_bavai – 非超級用戶可獲取的塊數(shù)
f_files – 文件結點總數(shù)
f_ffree – 可用文件結點數(shù)
f_favail – 超級用戶的可用文件結點數(shù)
f_flag – 掛載標記
f_namemax – 最大文件長度,單位字節(jié)

11. 獲取關于底層信息或其操作系統(tǒng)的信息

uos.uname()

獲取關于底層信息或其操作系統(tǒng)的信息。返回一個元組,形式為:
(sysname, nodename, release, version, machine)

  • sysname – 底層系統(tǒng)的名稱,string類型
  • nodename – 網(wǎng)絡名稱(可以與 sysname 相同) ,string類型
  • release – 底層系統(tǒng)的版本,string類型
  • version – MicroPython版本和構建日期,string類型
  • machine – 底層硬件(如主板、CPU)的標識符,string類型

12. 隨機bytes

返回具有n個隨機字節(jié)的bytes對象,只要有可能,它就會由硬件隨機數(shù)生成器生成。

uos.urandom(n)

我不知道這是干啥用的 ??????

二. ubinascii 進制與轉(zhuǎn)換模塊

導入模塊

import ubinascii

1. 編碼base64數(shù)據(jù)

ubinascii.b2a_base64(data)

以base64格式編碼二進制數(shù)據(jù),返回編碼數(shù)據(jù)。后面跟換行符,作為 bytes 對象。

2. 解碼base64編碼的數(shù)據(jù)

ubinascii.a2b_base64(data)

解碼base64編碼的數(shù)據(jù),會自動忽略輸入中的無效字符,返回 bytes 對象。

3. 將二進制數(shù)據(jù)轉(zhuǎn)換為十六進制字符串表示

ubinascii.hexlify(data, [sep])

指定了第二個參數(shù)sep,它將用于分隔兩個十六進制數(shù)

4. 將十六進制形式的字符串轉(zhuǎn)換成二進制形式的字符串表示

ubinascii.unhexlify(data)

三. random 隨機模塊

導入模塊

import urandom

1. 隨機0 到 1 之間的浮點數(shù)

urandom.random()

2. 隨機生成一個 start 到 end 之間的整數(shù)

urandom.randint(start, end)

3. 隨機生成 start 到 end 間并且遞增為 step 的正整數(shù)

urandom.randrange(start, end, step)
#例如: 取1~100間的偶數(shù)
urandom.randrange(0, 100, 2)

4. 隨機生成 start 到 end 范圍內(nèi)的浮點數(shù)

urandom.uniform(start, end)

5. 隨機取數(shù)

urandom.choice(obj)

隨機取 obj 中的元素, obj是一個容器

6. 隨機產(chǎn)生一個在n bits范圍內(nèi)的數(shù)。

urandom.getrandbits(n)
#例如:
urandom.getrandbits(8)  #取8位二進制位范圍內(nèi)的數(shù) (返回結構默認十進制)

7. 隨機數(shù)種子

urandom模塊使用Mersenne Twister算法來計算生成隨機數(shù)。這是一個確定性算法,可以通過random.seed()函數(shù)修改初始化種子.

簡單來說,用了隨機數(shù)種子后, 同一段代碼每次隨機都是確定的隨機值

import urandom
urandom.seed(20)
for i in range(3):
    print(urandom.random())

四. math 數(shù)學運算

導入模塊

import math
常亮 說明
math.e 數(shù)學常量 e
math.pi 圓周率
方法 說明
math.ceil(x) 向上取整
math.floor(x) 向下取整
math.trunc(x) 返回x的整數(shù)部分
math.fmod(x, y) 返回x/y的余數(shù),返回值為浮點數(shù)
math.modf(x) 返回由x的小數(shù)部分和整數(shù)部分組成的元組。
math.fabs(x) 絕對值
math.isfinite(x) 判斷 x 是否為有限數(shù),是則返回True,否則返回False。
math.isinf(x) 判斷x是否是正無窮大或負無窮大,則返回True,否則返回False。
math.isnan(x) x是不是數(shù)字,返回True,否則返回False。
math.sqrt(x) 返回數(shù)字x的平方根,返回值為浮點數(shù)
math.pow(x, y) 返回x的y次方,返回值是浮點數(shù)。
math.degrees(x) 將弧度轉(zhuǎn)換為角度,返回值為浮點數(shù)
math.radians(x) 將角度轉(zhuǎn)換為弧度,返回值為浮點數(shù)
math.sin(x) 返回x弧度的正弦值,數(shù)值在 -1 到 1 之間
math.cos(x) 返回x弧度的余弦值,數(shù)值在 -1 到 1 之間
math.tan(x) 返回 x 弧度的正切值,數(shù)值在 -1 到 1 之間,為浮點數(shù)
math.asin(x) 返回x的反正弦弧度值,返回值為浮點數(shù)。x是-1~1之間的數(shù),包括-1和1
math.acos(x) 返回x的反余弦弧度值,返回值為浮點數(shù)。x是-1~1之間的數(shù),包括-1和1
math.atan(x) 返回x的反正切弧度值,返回值為浮點數(shù)
math.atan2(x, y) 返回給定的 X 及 Y 坐標值的反正切值,返回值為浮點數(shù)
math.log(x) 返回x的自然對數(shù),x > 0,小于0會報錯
math.copysign(x, y) 把y的正負號加到x前面,可以使用0,返回值為浮點數(shù)。
math.ldexp(x, exp) math.ldexp()方法返回給定數(shù)字x和i的x * (2 ** i),這是math.frexp()的反函數(shù)

五. ujson - JSON編碼和解碼

ujson 模塊實現(xiàn)在Python數(shù)據(jù)對象和JSON數(shù)據(jù)格式之間進行轉(zhuǎn)換的功能。

import ujson

1. ujson.dump(obj, stream)

將 obj 數(shù)據(jù)對象轉(zhuǎn)化成 JSON字符串,將其寫入到給定的 stream 中

2. ujson.dumps(dict)

將 dict 類型的數(shù)據(jù)轉(zhuǎn)換成JSON字符串

3. ujson.load(stream)

解析給定的數(shù)據(jù) stream,將其解釋為JSON字符串并反序列化成Python對象。

4. ujson.loads(str)

解析JSON字符串并返回obj對象

六. utime - 與時間相關功能

utime 模塊用于獲取當前時間和日期、測量時間間隔和延遲。

import utime

1. utime.localtime([secs]) 時間戳轉(zhuǎn)時間元組

該函數(shù)用來將一個以秒表示的時間轉(zhuǎn)換為一個元組,元組包含了了年、月、日、時、分、秒、星期、一年中第幾天;如果沒有給定參數(shù)sec,則使用RTC時間。返回值形式如下:

(year, month, mday, hour, minute, second, weekday, yearday)

  • year :年份,int型
  • month :月份,1~12,int型
  • mday :日,當月多少號,1~31,int型
  • hour :小時,0~23,int型
  • minute :分鐘,0~59,int型
  • second :秒,0~59,int型
  • weekday :星期,周一到周日是0~6,int型
  • yearday :一年中的第多少天,int型

2. utime.mktime(datetime) 時間元組轉(zhuǎn)時間戳

該函數(shù)作用與locatime()相反,它將一個存放在元組中的時間轉(zhuǎn)換為以秒計的時間戳

3. utime.sleep(seconds) /utime.sleep_us(us) 休眠給定的時間

注意:sleep()函數(shù)的調(diào)用會導致程序休眠阻塞。

4. utime.time()

返回自紀元以來的秒數(shù)(以整數(shù)形式)。如果未設置RTC,則此函數(shù)返回自特定于端口的參考時間點以來的秒數(shù)(對于不具有電池后備RTC的嵌入式板,通常是由于加電或復位)。如果要開發(fā)可移植的MicroPython應用程序,則不應依賴此功能提供高于秒的精度。如果需要更高的精度,請使用 ticks_ms()和ticks_us()函數(shù),如果需要日歷時間,則 localtime()不帶參數(shù)會更好。

4. utime.ticks_ms() / utime.ticks_us()

返回不斷遞增的毫秒/微秒計數(shù)器,在某些值后會重新計數(shù)(未指定)。計數(shù)值本身無特定意義,只適合用在 ticks_diff()函數(shù)中。

5 . utime.ticks_cpu()

和 ticks_ms/ticks_us 類似,具有更高精度 (使用 CPU 時鐘)。

6. utime.ticks_diff(ticks1, ticks2)

計算兩次調(diào)用 ticks_ms(), ticks_us(),或 ticks_cpu()之間的時間。因為這些函數(shù)的計數(shù)值可能會回繞,所以不能直接相減,需要使用 ticks_diff() 函數(shù)?!芭f” 時間需要在 “新” 時間之前,否則結果無法確定。這個函數(shù)不要用在計算很長的時間 (因為 ticks_*() 函數(shù)會回繞,通常周期不是很長)。通常用法是在帶超時的輪詢事件中調(diào)用。

七. sys 模塊

sys 模塊中提供了與QuecPython運行環(huán)境有關的函數(shù)和變量

import sys
參數(shù) 說明
sys.implementation 當前microPython版本信息
sys.byteorder 字節(jié)順序 (‘little’ - 小端, ‘big’ - 大端)
sys.maxsize 本機整數(shù)類型可以在當前平臺上保留的最大值,如果它小于平臺最大值,則為MicroPython整數(shù)類型表示的最大值
sys.argv 當前程序啟動的可變參數(shù)列表。
sys.modules 已載入模塊的字典
sys.platform MicroPython運行的平臺
sys.version MicroPython 語言版本,字符串格式。
sys.version_info MicroPython 語言版本,整數(shù)元組格式。
sys.stdin 標準輸入(默認是USB虛擬串口,可選其他串口)
sys.stdout 標準輸出(默認是USB虛擬串口,可選其他串口)
方法 說明
sys.exit(retval=0) 使用給定的參數(shù)退出當前程序。與此同時,該函數(shù)會引發(fā)SystemExit退出。如果給定了參數(shù),則將其值作為參數(shù)賦值給SystemExit
sys.print_exception(exc, file=sys.stdout) 打印異常到文件對象,默認是 sys.stdout,即輸出異常信息的標準輸出。

八. uhashlib - 哈希算法

實現(xiàn)二進制數(shù)據(jù)散列算法,目前支持sha256,sha1,MD5。

import uhashlib

1. 創(chuàng)建哈希對象

hash_obj = uhashlib.sha256(bytes)
hash_obj = uhashlib.sha1(bytes)
hash_obj = uhashlib.md5(bytes)

2. 更多的bytes數(shù)據(jù)加到散列

hash_obj .update(bytes)

3. 返回加密后字節(jié)類型的數(shù)據(jù)

返回通過哈希傳遞的所有數(shù)據(jù)的散列,數(shù)據(jù)為字節(jié)類型。調(diào)用此方法后,無法再將更多的數(shù)據(jù)送入散列

hash_obj .digest()
import uhashlib
import ubinascii

hash_obj  = uhashlib.sha256()  # 創(chuàng)建hash對象
hash_obj.update(b"QuecPython")
res = hash_obj.digest()
# b"\x1e\xc6gq\xb3\xa9\xac>\xa4\xc4O\x00\x9eTW\x97\xd4.\x9e}Bo\xff\x82u\x89Th\xfe'\xc6\xcd"
# 轉(zhuǎn)成十六進制表示
hex_msg = ubinascii.hexlify(res)
# b'1ec66771b3a9ac3ea4c44f009e545797d42e9e7d426fff8275895468fe27c6cd'

九. _thread - 多線程

_thread 模塊提供創(chuàng)建新線程的方法,并提供互斥鎖, 關于他的用法, 后續(xù)會有專門的介紹

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容