一. uos - 基本系統服務
導入子產品
import uos
1. 擷取目前路徑
uos.getcwd()
2. 列出目錄檔案
uos.listdir( [dir] )
沒有參數列出目前目錄檔案,否則列出給定目錄的檔案。dir為可選參數,表示目錄名,預設為 ‘/’ 目錄。
3. 改變目前目錄
uos.chdir(path)
4. 建立一個新的目錄/檔案
uos.mkdir(path)
建立一個新的目錄。path表示準備建立的目錄名。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iN3MmZkhzN1UTOyAzN3gzY4UmZzIWZyQWMzgjNkFTOw8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
5. 重命名目錄/檔案
uos.rename(old_path, new_path)
重命名檔案。old_path表示舊檔案或目錄名,new_path表示新檔案或目錄名。
6. 删除指定目錄
uos.rmdir(path)
7. 删除檔案
uos.remove(path)
8. 檔案/目錄 三元組(或四元組)疊代器
uos.ilistdir( [dir] )
dir為可選參數,表示目錄名,沒有參數時,預設列出目前目錄,有參數時,則列出dir參數指定的目錄。
該函數傳回一個疊代器,該疊代器會生成所列出條目對應的三元組(或者四元組,對EC600S來說是四元組)。
三元組(或四元組)結構(name, type, inode[, size]):
- name 是條目的名稱,字元串類型,如果dir是位元組對象,則名稱為位元組;
- type 是條目的類型,整型數,0x4000表示目錄,0x8000表示正常檔案;
- 是一個與檔案的索引節點相對應的整數,對于沒有這種概念的檔案系統來說,可能為0;
- 一些平台可能會傳回一個4元組,其中包含條目的size。對于檔案條目,size表示檔案大小的整數,如果未知,則為-1。對于目錄項,其含義目前尚未定義。
例如:
import uos
print(uos.getcwd())
for item in uos.ilistdir():
print(item)
9. 擷取檔案或目錄的狀态
uos.stat(path)
擷取檔案或目錄的狀态。path表示檔案或目錄名。傳回值是一個元組,傳回值形式為:
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)
mode – inode保護模式
ino – inode節點号
dev – inode駐留的裝置
nlink – inode的連結數
uid – 所有者的使用者ID
gid – 所有者的組ID
size – 檔案大小,機關位元組
atime – 上次通路的時間
mtime – 最後一次修改的時間
ctime – 作業系統報告的“ctime”,在某些系統上是最新的中繼資料更改的時間,在其它系統上是建立時間,詳細資訊參見平台文檔
這個我在EC600S上列印的資料不對, 沒深究
10. 擷取檔案系統狀态資訊
uos.statvfs(path)
path表示檔案或目錄名。傳回一個包含檔案系統資訊的元組
(f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax)
f_bsize – 檔案系統塊大小,機關位元組
f_frsize – 分棧大小,機關位元組
f_blocks – 檔案系統資料塊總數
f_bfree – 可用塊數
f_bavai – 非超級使用者可擷取的塊數
f_files – 檔案結點總數
f_ffree – 可用檔案結點數
f_favail – 超級使用者的可用檔案結點數
f_flag – 挂載标記
f_namemax – 最大檔案長度,機關位元組
11. 擷取關于底層資訊或其作業系統的資訊
uos.uname()
擷取關于底層資訊或其作業系統的資訊。傳回一個元組,形式為:
(sysname, nodename, release, version, machine)
- sysname – 底層系統的名稱,string類型
- nodename – 網絡名稱(可以與 sysname 相同) ,string類型
- release – 底層系統的版本,string類型
- version – MicroPython版本和建構日期,string類型
- machine – 底層硬體(如主機闆、CPU)的辨別符,string類型
12. 随機bytes
傳回具有n個随機位元組的bytes對象,隻要有可能,它就會由硬體随機數生成器生成。
uos.urandom(n)
我不知道這是幹啥用的 😂😂😂
二. ubinascii 進制與轉換子產品
導入子產品
import ubinascii
1. 編碼base64資料
ubinascii.b2a_base64(data)
以base64格式編碼二進制資料,傳回編碼資料。後面跟換行符,作為 bytes 對象。
2. 解碼base64編碼的資料
ubinascii.a2b_base64(data)
解碼base64編碼的資料,會自動忽略輸入中的無效字元,傳回 bytes 對象。
3. 将二進制資料轉換為十六進制字元串表示
ubinascii.hexlify(data, [sep])
指定了第二個參數sep,它将用于分隔兩個十六進制數
4. 将十六進制形式的字元串轉換成二進制形式的字元串表示
ubinascii.unhexlify(data)
三. random 随機子產品
導入子產品
import urandom
1. 随機0 到 1 之間的浮點數
urandom.random()
2. 随機生成一個 start 到 end 之間的整數
urandom.randint(start, end)
3. 随機生成 start 到 end 間并且遞增為 step 的正整數
urandom.randrange(start, end, step)
#例如: 取1~100間的偶數
urandom.randrange(0, 100, 2)
4. 随機生成 start 到 end 範圍内的浮點數
urandom.uniform(start, end)
5. 随機取數
urandom.choice(obj)
随機取 obj 中的元素, obj是一個容器
6. 随機産生一個在n bits範圍内的數。
urandom.getrandbits(n)
#例如:
urandom.getrandbits(8) #取8位二進制位範圍内的數 (傳回結構預設十進制)
7. 随機數種子
urandom子產品使用Mersenne Twister算法來計算生成随機數。這是一個确定性算法,可以通過random.seed()函數修改初始化種子.
簡單來說,用了随機數種子後, 同一段代碼每次随機都是确定的随機值
import urandom
urandom.seed(20)
for i in range(3):
print(urandom.random())
四. math 數學運算
導入子產品
import math
常亮 | 說明 |
---|---|
math.e | 數學常量 e |
math.pi | 圓周率 |
方法 | 說明 |
---|---|
math.ceil(x) | 向上取整 |
math.floor(x) | 向下取整 |
math.trunc(x) | 傳回x的整數部分 |
math.fmod(x, y) | 傳回x/y的餘數,傳回值為浮點數 |
math.modf(x) | 傳回由x的小數部分和整數部分組成的元組。 |
math.fabs(x) | 絕對值 |
math.isfinite(x) | 判斷 x 是否為有限數,是則傳回True,否則傳回False。 |
math.isinf(x) | 判斷x是否是正無窮大或負無窮大,則傳回True,否則傳回False。 |
math.isnan(x) | x是不是數字,傳回True,否則傳回False。 |
math.sqrt(x) | 傳回數字x的平方根,傳回值為浮點數 |
math.pow(x, y) | 傳回x的y次方,傳回值是浮點數。 |
math.degrees(x) | 将弧度轉換為角度,傳回值為浮點數 |
math.radians(x) | 将角度轉換為弧度,傳回值為浮點數 |
math.sin(x) | 傳回x弧度的正弦值,數值在 -1 到 1 之間 |
math.cos(x) | 傳回x弧度的餘弦值,數值在 -1 到 1 之間 |
math.tan(x) | 傳回 x 弧度的正切值,數值在 -1 到 1 之間,為浮點數 |
math.asin(x) | 傳回x的反正弦弧度值,傳回值為浮點數。x是-1~1之間的數,包括-1和1 |
math.acos(x) | 傳回x的反餘弦弧度值,傳回值為浮點數。x是-1~1之間的數,包括-1和1 |
math.atan(x) | 傳回x的反正切弧度值,傳回值為浮點數 |
math.atan2(x, y) | 傳回給定的 X 及 Y 坐标值的反正切值,傳回值為浮點數 |
math.log(x) | 傳回x的自然對數,x > 0,小于0會報錯 |
math.copysign(x, y) | 把y的正負号加到x前面,可以使用0,傳回值為浮點數。 |
math.ldexp(x, exp) | math.ldexp()方法傳回給定數字x和i的x * (2 ** i),這是math.frexp()的反函數 |
五. ujson - JSON編碼和解碼
ujson 子產品實作在Python資料對象和JSON資料格式之間進行轉換的功能。
import ujson
1. ujson.dump(obj, stream)
将 obj 資料對象轉化成 JSON字元串,将其寫入到給定的 stream 中
2. ujson.dumps(dict)
将 dict 類型的資料轉換成JSON字元串
3. ujson.load(stream)
解析給定的資料 stream,将其解釋為JSON字元串并反序列化成Python對象。
4. ujson.loads(str)
解析JSON字元串并傳回obj對象
六. utime - 與時間相關功能
utime 子產品用于擷取目前時間和日期、測量時間間隔和延遲。
import utime
1. utime.localtime([secs]) 時間戳轉時間元組
該函數用來将一個以秒表示的時間轉換為一個元組,元組包含了了年、月、日、時、分、秒、星期、一年中第幾天;如果沒有給定參數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) 時間元組轉時間戳
該函數作用與locatime()相反,它将一個存放在元組中的時間轉換為以秒計的時間戳
3. utime.sleep(seconds) /utime.sleep_us(us) 休眠給定的時間
注意:sleep()函數的調用會導緻程式休眠阻塞。
4. utime.time()
傳回自紀元以來的秒數(以整數形式)。如果未設定RTC,則此函數傳回自特定于端口的參考時間點以來的秒數(對于不具有電池後備RTC的嵌入式闆,通常是由于加電或複位)。如果要開發可移植的MicroPython應用程式,則不應依賴此功能提供高于秒的精度。如果需要更高的精度,請使用 ticks_ms()和ticks_us()函數,如果需要月曆時間,則 localtime()不帶參數會更好。
4. utime.ticks_ms() / utime.ticks_us()
傳回不斷遞增的毫秒/微秒計數器,在某些值後會重新計數(未指定)。計數值本身無特定意義,隻适合用在 ticks_diff()函數中。
5 . utime.ticks_cpu()
和 ticks_ms/ticks_us 類似,具有更高精度 (使用 CPU 時鐘)。
6. utime.ticks_diff(ticks1, ticks2)
計算兩次調用 ticks_ms(), ticks_us(),或 ticks_cpu()之間的時間。因為這些函數的計數值可能會回繞,是以不能直接相減,需要使用 ticks_diff() 函數。“舊” 時間需要在 “新” 時間之前,否則結果無法确定。這個函數不要用在計算很長的時間 (因為 ticks_*() 函數會回繞,通常周期不是很長)。通常用法是在帶逾時的輪詢事件中調用。
七. sys 子產品
sys 子產品中提供了與QuecPython運作環境有關的函數和變量
import sys
參數 | 說明 |
---|---|
sys.implementation | 目前microPython版本資訊 |
sys.byteorder | 位元組順序 (‘little’ - 小端, ‘big’ - 大端) |
sys.maxsize | 本機整數類型可以在目前平台上保留的最大值,如果它小于平台最大值,則為MicroPython整數類型表示的最大值 |
sys.argv | 目前程式啟動的可變參數清單。 |
sys.modules | 已載入子產品的字典 |
sys.platform | MicroPython運作的平台 |
sys.version | MicroPython 語言版本,字元串格式。 |
sys.version_info | MicroPython 語言版本,整數元組格式。 |
sys.stdin | 标準輸入(預設是USB虛拟序列槽,可選其他序列槽) |
sys.stdout | 标準輸出(預設是USB虛拟序列槽,可選其他序列槽) |
方法 | 說明 |
---|---|
sys.exit(retval=0) | 使用給定的參數退出目前程式。與此同時,該函數會引發SystemExit退出。如果給定了參數,則将其值作為參數指派給SystemExit |
sys.print_exception(exc, file=sys.stdout) | 列印異常到檔案對象,預設是 sys.stdout,即輸出異常資訊的标準輸出。 |
八. uhashlib - 雜湊演算法
實作二進制資料雜湊演算法,目前支援sha256,sha1,MD5。
import uhashlib
1. 建立哈希對象
hash_obj = uhashlib.sha256(bytes)
hash_obj = uhashlib.sha1(bytes)
hash_obj = uhashlib.md5(bytes)
2. 更多的bytes資料加到散列
hash_obj .update(bytes)
3. 傳回加密後位元組類型的資料
傳回通過哈希傳遞的所有資料的散列,資料為位元組類型。調用此方法後,無法再将更多的資料送入散列
hash_obj .digest()
import uhashlib
import ubinascii
hash_obj = uhashlib.sha256() # 建立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"
# 轉成十六進制表示
hex_msg = ubinascii.hexlify(res)
# b'1ec66771b3a9ac3ea4c44f009e545797d42e9e7d426fff8275895468fe27c6cd'
九. _thread - 多線程
_thread 子產品提供建立新線程的方法,并提供互斥鎖, 關于他的用法, 後續會有專門的介紹