os — 기본 “운영 체제” 서비스¶
os 모듈에는 파일 시스템 접근 및 마운트, 터미널 리디렉션 및 복제를 위한 함수와 uname 및 urandom 함수가 포함되어 있습니다.
일반 함수¶
- os.uname() Tuple[str, str, str, str, str]¶
기본 머신 및/또는 운영 체제에 대한 정보를 담은 튜플(이름이 있는 튜플일 수 있음)을 반환합니다. 튜플에는 다음 순서로 다섯 개의 필드가 있으며, 각 필드는 문자열입니다:
sysname– 기본 시스템의 이름nodename– 네트워크 이름(sysname과 같을 수 있음)release– 기본 시스템의 버전version– MicroPython 버전 및 빌드 날짜machine– 기본 하드웨어 식별자(예: 보드, CPU)
- os.urandom(n: int) bytes¶
n 개의 무작위 바이트를 담은 bytes 객체를 반환합니다. 소스는 지원되는 모든 카메라에서 암호학적으로 적합하지만, 구현은 포트에 따라 다릅니다:
STM32 카메라 (M4, M7, H7, H7+, PT, N6)는 STM32 하드웨어 RNG 주변장치를 사용합니다.
i.MX RT1062 카메라 (RT1060)는 칩의 하드웨어 TRNG를 사용합니다.
Alif Ensemble 카메라 (AE3)는 Secure Enclave의 하드웨어 난수 서비스를 사용합니다.
Arduino Nano 33 BLE Sense 는 nRF52 하드웨어 RNG 주변장치를 사용합니다.
Arduino Nano RP2040 Connect 에는 하드웨어 TRNG가 없습니다. pico-sdk PRNG가 시드되고 RP2040의 온칩 엔트로피 소스로 지속적으로 다시 혼합됩니다.
파일 시스템 접근¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
이 함수는 나열 중인 디렉터리의 항목에 해당하는 튜플을 산출하는 이터레이터를 반환합니다. 인수가 없으면 현재 디렉터리를 나열하고, 그렇지 않으면 dir 로 주어진 디렉터리를 나열합니다.
튜플은 (name, type, inode[, size]) 형식을 가집니다:
name 은 문자열(dir 이 bytes 객체이면 bytes)이며 항목의 이름입니다;
type 은 항목의 유형을 지정하는 정수로, 디렉터리는 0x4000, 일반 파일은 0x8000입니다;
inode 는 파일의 inode에 해당하는 정수이며, 그러한 개념이 없는 파일 시스템에서는 0일 수 있습니다.
size 는 파일 시스템 유형에 따라 포함될 수 있는 정수입니다. 파일 항목의 경우 size 는 파일 크기를 나타내며, 알 수 없으면 -1입니다. 디렉터리 항목에 대한 의미는 현재 정의되어 있지 않습니다.
- os.statvfs(path: str) Tuple¶
파일 시스템의 상태를 가져옵니다.
다음 순서로 파일 시스템 정보를 담은 튜플을 반환합니다:
f_bsize– 파일 시스템 블록 크기f_frsize– 프래그먼트 크기f_blocks– f_frsize 단위의 파일 시스템 크기f_bfree– 여유 블록 수f_bavail– 비특권 사용자를 위한 여유 블록 수f_files– inode 수f_ffree– 여유 inode 수f_favail– 비특권 사용자를 위한 여유 inode 수f_flag– 마운트 플래그f_namemax– 최대 파일 이름 길이
inode 관련 매개변수:
f_files,f_ffree,f_favail및f_flag매개변수는 포트별 구현에서 사용할 수 없을 수 있으므로0을 반환할 수 있습니다.
터미널 리디렉션 및 복제¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
주어진 stream 류 객체에서 MicroPython 터미널(REPL)을 복제하거나 전환합니다. stream_object 인수는 네이티브 스트림 객체이거나
io.IOBase에서 파생되어readinto()및write()메서드를 구현해야 합니다. 스트림은 논블로킹 모드여야 하며, 읽을 수 있는 데이터가 없으면readinto()는None을 반환해야 합니다.이 함수를 호출한 후에는 모든 터미널 출력이 이 스트림에서 반복되며, 스트림에서 사용 가능한 모든 입력이 터미널 입력으로 전달됩니다.
index 매개변수는 음이 아닌 정수여야 하며 어떤 복제 슬롯이 설정되는지 지정합니다. 특정 포트는 둘 이상의 슬롯(슬롯 0은 항상 사용 가능)을 구현할 수 있으며, 그 경우 터미널 입력과 출력은 설정된 모든 슬롯에서 복제됩니다.
stream_object 로
None이 전달되면 index 로 주어진 슬롯에서 복제가 취소됩니다.이 함수는 주어진 슬롯의 이전 스트림 류 객체를 반환합니다.
- os.dupterm_notify(obj_in: Any, /) None¶
os.dupterm()을 통해 이전에 등록된 스트림 류 객체에서 입력이 사용 가능함을 MicroPython REPL에 알립니다.이 함수는 입력을 읽을 준비가 되었음을 REPL에 알리기 위해 사용자 정의 스트림 구현(예: UART, 블루투스 또는 기타 비 USB REPL 스트림)에서 호출해야 합니다. 적절히 사용하면 Ctrl+C(KeyboardInterrupt를 트리거하는 데 사용)와 같은 특수 문자가 REPL에서 즉시 처리되어 사용자 코드에 대한 예상되는 인터럽트 동작이 가능해집니다.
obj_in 매개변수는
os.dupterm_notify()에서 무시되지만,UART.irq()와 같은 인터럽트 핸들러에서 dupterm_notify를 호출할 수 있도록 하기 위해 필요합니다.예제:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
참고
dupterm_notify()함수가 호출되지 않으면 사용자 정의 스트림의 입력이 다음 REPL 폴링 때까지 감지되거나 처리되지 않아 KeyboardInterrupt 또는 기타 제어 신호가 지연될 수 있습니다. 이는 자동 알림이 보장되지 않는 UART, 블루투스 및 기타 비표준 REPL 연결에서 특히 중요합니다.
파일 시스템 마운트¶
다음 함수와 클래스는 vfs 모듈로 이동되었습니다. 이 모듈에서는 하위 호환성을 위해서만 제공되며 MicroPython 버전 2에서 제거될 예정입니다.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
파일 시스템 객체 fsobj 를 mount_point 문자열로 주어진 VFS 위치에 마운트합니다. fsobj 는
mount()메서드가 있는 VFS 객체이거나 블록 장치일 수 있습니다. 블록 장치인 경우 파일 시스템 유형이 자동으로 감지됩니다(인식된 파일 시스템이 없으면 예외가 발생함). mount_point 는 fsobj 를 루트에 마운트하기 위해'/'이거나, 루트 아래의 하위 디렉터리에 마운트하기 위해'/<name>'일 수 있습니다.readonly 가
True이면 파일 시스템이 읽기 전용으로 마운트됩니다.마운트 과정에서 파일 시스템 객체에 대해
mount()메서드가 호출됩니다.mount_point 가 이미 마운트되어 있으면
OSError(EPERM)을 발생시킵니다.
- os.mount() List[Tuple[Any, str]]
mount()에 인수가 없으면 모든 활성 마운트 지점을 나타내는 튜플 목록을 반환합니다.반환된 목록은 [(fsobj, mount_point), …] 형식을 가집니다.
- os.umount(mount_point: str | Any) None¶
파일 시스템을 마운트 해제합니다. mount_point 는 마운트 위치를 지정하는 문자열이거나 이전에 마운트된 파일 시스템 객체일 수 있습니다. 마운트 해제 과정에서 파일 시스템 객체에 대해
umount()메서드가 호출됩니다.mount_point 를 찾을 수 없으면
OSError(EINVAL)을 발생시킵니다.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
FAT 파일 시스템 형식을 사용하는 파일 시스템 객체를 생성합니다. FAT 파일 시스템의 저장소는 block_dev 가 제공합니다. 이 생성자로 만든 객체는
mount()를 사용하여 마운트할 수 있습니다.- static mkfs(block_dev: AbstractBlockDev) None¶
block_dev 에 FAT 파일 시스템을 구축합니다.