一. 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ù)會有專門的介紹