<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # uos – 基本的“操作系統”服務 該模塊實現了相應CPython模塊的子集,如下所述。有關更多信息,請參閱原始CPython文檔:[os](https://docs.python.org/3.5/library/os.html#module-os)。 `uos`模塊包含用于文件系統訪問和掛載,終端重定向和復制以及`uname`和`urandom`等函數。 ## 1\. 常用函數 ### 1.1. 返回一個元組(可能是一個命名了的元組),其中包含有關底層機器和/或其操作系統的信息。元組按以下順序有五個字段,每個字段都是一個字符串: ``` uos.uname() ``` * sysname - 底層系統的名稱 * nodename - 節點名(/板子名稱)(可以與sysname相同) * release - 底層系統的版本 * version - MicroPython版本和構建日期 * machine - 底層硬件的標識符(例如,板,CPU) ### 1.2. 返回一個包含n個隨機字節的字節對象。只要有可能,它就由硬件隨機數生成器生成。 ``` uos.urandom(n) ``` ## 2\. 文件系統訪問 ### 2.1. 更改當前目錄。 ``` uos.chdir(path) ``` ### 2.2. 獲取當前目錄。 ``` uos.getcwd() ``` ### 2.3. 此函數返回一個迭代器,然后生成與列出的目錄中的條目對應的元組。如果不傳參數,它列出了當前目錄,否則它列出了dir給出的目錄。 ``` uos.ilistdir([dir]) ``` 元組具有形式(名稱,類型,inode \[,大小\]): * name: 是一個字符串(如果dir是一個字節對象,則為字節),并且是條目的名稱; * type: 是一個整數,指定條目的類型,目錄為 0x4000,常規文件為 0x8000; * inode: 是對應于文件inode的整數,對于沒有這種概念的文件系統可以是0。 * 某些平臺可能會返回包含條目大小的4元組。對于文件條目,size是表示文件大小的整數,如果未知則為-1。目前條目的含義目前尚未定義。 ### 2.4. 如果沒有參數,請列出當前目錄。否則列出給定目錄。 ``` uos.listdir([dir]) ``` ### 2.5. 創建一個新目錄。 ``` uos.mkdir(path) ``` ### 2.6. 刪除文件。 ``` uos.remove(path) ``` ### 2.7. 刪除目錄。 ``` uos.rmdir(path) ``` ### 2.8. 重命名文件。 ``` uos.rename(old_path,new_path) ``` ### 2.9. 獲取文件或目錄的狀態。 ``` uos.stat(path) ``` ### 2.10. 獲取文件系統的狀態。 ``` uos.statvfs(path) ``` 按以下順序返回包含文件系統信息的元組: * f\_bsize - 文件系統塊大小 * f\_frsize - 片段大小 * f\_blocks - f\_frsize單位中fs的大小 * f\_bfree - 空閑塊數 * f\_bavail - 無特權用戶的空閑塊數 * f\_files - inode數量 * f\_ffree - 免費inode的數量 * f\_favail - 無特權用戶的免費inode數 * f\_flag - 掛載標志 * f\_namemax - 最大文件名長度 與inode相關的參數:`f_files`,`f_ffree`,`f_avail`和`f_flags`參數可能返回'0`,因為它們在特定于硬件的實現中不可用。 ### 2.11. 同步所有文件系統。 ``` uos.sync() ``` ## 3\. 終端重定向和復制 ### 3.1. 在給定的`stream`類對象上復制或切換MicroPython終端(REPL)。 ``` uos.dupterm(stream_object,index = 0) ``` stream\_object參數必須實現`readinto()`和`write()`方法。流應處于非阻塞模式,如果沒有可用于讀取的數據,`readinto()`應返回'None`。 調用此函數后,將在此流上重復所有終端輸出,并且流上可用的任何輸入都將傳遞到終端輸入。 index參數應為非負整數,并指定設置的復制槽。給定端口可以實現多個槽(槽0將始終可用),并且在這種情況下,終端輸入和輸出在所有設置的槽上復制。 如果`None`作為stream\_object傳遞,則在索引給出的槽上取消復制。 該函數返回給定槽中的前一個類似流的對象。 ## 4\. 文件系統掛載 某些端口提供虛擬文件系統(VFS)以及在此VFS中安裝多個“真實”文件系統的功能。文件系統對象可以安裝在VFS的根目錄中,也可以安裝在根目錄中的子目錄中。這允許Python程序看到的文件系統的動態和靈活配置。具有此功能的端口提供`mount()`和`umount()`函數,以及可能由VFS類表示的各種文件系統實現。 ### 4.1. 將文件系統對象fsobj掛載到mount\_point字符串指定的VFS中的位置。 ``` uos.mount(fsobj,mount_point,*,readonly) ``` fsobj可以是一個具有`mount()`方法或塊設備的VFS對象。如果它是塊設備,則會自動檢測文件系統類型(如果未識別文件系統,則會引發異常)。 mount\_point可以是'/'在根目錄下掛載fsobj,或者'/'掛載到根目錄下的子目錄中。 如果readonly為“True”,則文件系統以只讀方式掛載。 在mount過程中,在文件系統對象上調用`mount()`方法。 如果mount_point已經掛載,將引發`OSError(EPERM)`。 ### 4.2. 卸載文件系統。 mount_point可以是命名安裝位置的字符串,也可以是先前安裝的文件系統對象。 ``` uos.umount(mount_point) ``` 在卸載過程中,在文件系統對象上調用方法`umount()`。 如果找不到mount_point,會引發`OSError(EINVAL)`。 ### 4.3.創建使用FAT文件系統格式的文件系統對象。 ``` class uos.VfsFat(block_dev) ``` FAT文件系統的存儲由block\_dev提供。可以使用`mount()`掛載由此構造函數創建的對象。 #### 在block_dev上構建FAT文件系統。 ``` static mkfs(block_dev) ``` ## 5\. 文件系統格式化 在MaixPy中,我們提供了對flash進行文件系統格式化的操作。如果用戶想要清空flash文件系統那么可以使用該接口`flash_format`來實現 ### 5.1. 該接口不需要傳入參數,直接使用將對開發板的 flash 進行格式化。 ``` uos.flash_format() ``` 請注意,格式化將清空所有文件,在使用前請確認 flash 中文件都是需要刪除的 ## 6\. 塊設備 塊設備是實現塊協議的對象,塊協議是由`AbstractBlockDev`類在下面描述的一組方法。該類的具體實現通常允許訪問類似存儲器的功能作為硬件(如閃存)。特定文件系統驅動程序可以使用塊設備來存儲其文件系統的數據。 ### 6.1. 構造塊設備對象。構造函數的參數取決于特定的塊設備。 ``` class uos.AbstractBlockDev() ``` #### 從索引block_num給出的塊開始,將塊從設備讀入buf(字節數組)。 ``` readblocks(block_num, buf) ``` 要讀取的塊數由buf的長度給出,該長度將是塊大小的倍數。 ####從索引block_num給出的塊開始,將buf(字節數組)中的塊寫入設備。 ``` writeblocks(block_num, buf) ``` 要寫入的塊數由buf的長度給出,該長度將是塊大小的倍數。 #### 控制塊設備并查詢其參數。要執行的操作由op給出,它是以下整數之一: ``` ioctl(op, arg) ``` * 1 - 初始化設備(arg未使用) * 2 - 關閉設備(arg未使用) * 3 - 同步設備(arg未使用) * 4 - 獲取塊數的計數,應該返回一個整數(arg未使用) * 5 - 獲取塊中的字節數,應該返回一個整數,或者“None”,在這種情況下使用默認值512(arg未使用) ### 6.2. 例程 #### 例程1 以fat32舉例,下面的類將實現一個塊設備,它使用`bytearray`將其數據存儲在RAM中: ~~~ class RAMBlockDev: def __init__(self, block_size, num_blocks): self.block_size = block_size self.data = bytearray(block_size * num_blocks) def readblocks(self, block_num, buf): for i in range(len(buf)): buf[i] = self.data[block_num * self.block_size + i] def writeblocks(self, block_num, buf): for i in range(len(buf)): self.data[block_num * self.block_size + i] = buf[i] def ioctl(self, op, arg): if op == 4: # get number of blocks return len(self.data) // self.block_size if op == 5: # get block size return self.block_size ~~~ 或者: ~~~ import uos bdev = RAMBlockDev(512, 50) uos.VfsFat.mkfs(bdev) vfs = uos.VfsFat(bdev) uos.mount(vfs, '/ramdisk') ~~~ #### 例程2 以spiffs舉例,下面的類將實現一個塊設備,它使用`bytearray`將其數據存儲在RAM中: ~~~ class RAMFlashDev: def __init__(self): self.fs_size = 256*1024 self.fs_data = bytearray(256*1024) self.erase_block = 32*1024 self.log_block_size = 64*1024 self.log_page_size = 4*1024 def read(self,buf,size,addr): for i in range(len(buf)): buf[i] = self.fs_data[addr+i] def write(self,buf,size,addr): for i in range(len(buf)): self.fs_data[addr+i] = buf[i] def erase(self,size,addr): for i in range(size): self.fs_data[addr+i] = 0xff ~~~ ~~~ blkdev = RAMFlashDev.RAMFlashDev() vfs = uos.VfsSpiffs(blkdev) vfs.mkfs(vfs) uos.mount(vfs,'/ramdisk') ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看