msvcrt — 来自 MS VC++ 运行时的有用例程


这些函数提供对 Windows 平台上一些有用功能的访问。一些更高级别的模块使用这些函数来构建其服务的 Windows 实现。例如,getpass 模块在 getpass() 函数的实现中使用了它。

有关这些函数的更多文档可以在平台 API 文档中找到。

该模块实现了控制台 I/O API 的普通字符和宽字符变体。普通 API 只处理 ASCII 字符,对于国际化应用程序来说用途有限。宽字符 API 应该尽可能地使用。

在版本 3.3 中更改: 此模块中的操作现在会引发 OSError,以前会引发 IOError

文件操作

msvcrt.locking(fd, mode, nbytes)

根据来自 C 运行时的文件描述符 fd 锁定文件的一部分。在失败时引发 OSError。文件锁定的区域从当前文件位置开始,长度为 nbytes 字节,并且可能超出文件末尾。mode 必须是下面列出的 LK_* 常量之一。文件中的多个区域可以同时锁定,但不能重叠。相邻区域不会合并;它们必须单独解锁。

引发 审计事件 msvcrt.locking,参数为 fdmodenbytes

msvcrt.LK_LOCK
msvcrt.LK_RLCK

锁定指定的字节。如果字节无法锁定,程序将在 1 秒后立即重试。如果在 10 次尝试后字节仍然无法锁定,则会引发 OSError

msvcrt.LK_NBLCK
msvcrt.LK_NBRLCK

锁定指定的字节。如果字节无法锁定,则会引发 OSError

msvcrt.LK_UNLCK

解锁指定的字节,这些字节必须先前已锁定。

msvcrt.setmode(fd, flags)

设置文件描述符 fd 的行尾转换模式。要将其设置为文本模式,flags 应该为 os.O_TEXT;对于二进制,它应该为 os.O_BINARY

msvcrt.open_osfhandle(handle, flags)

从文件句柄 handle 创建一个 C 运行时文件描述符。flags 参数应为 os.O_APPENDos.O_RDONLYos.O_TEXT 的按位或。返回的文件描述符可以用作 os.fdopen() 的参数来创建一个文件对象。

引发 审计事件 msvcrt.open_osfhandle,参数为 handleflags

msvcrt.get_osfhandle(fd)

返回文件描述符 fd 的文件句柄。如果 fd 未被识别,则引发 OSError

引发 审计事件 msvcrt.get_osfhandle,参数为 fd

控制台 I/O

msvcrt.kbhit()

如果有一个按键等待读取,则返回 True

msvcrt.getch()

读取一个按键并以字节字符串的形式返回结果字符。不会向控制台回显任何内容。如果按键尚未可用,此调用将阻塞,但不会等待按下 Enter。如果按下的键是特殊功能键,则将返回 '\000''\xe0';下一次调用将返回键码。无法使用此函数读取 Control-C 按键。

msvcrt.getwch()

getch() 的宽字符变体,返回一个 Unicode 值。

msvcrt.getche()

类似于 getch(),但如果按键表示可打印字符,则会回显按键。

msvcrt.getwche()

getche() 的宽字符变体,返回一个 Unicode 值。

msvcrt.putch(char)

将字节字符串 char 打印到控制台,不进行缓冲。

msvcrt.putwch(unicode_char)

putch() 的宽字符变体,接受一个 Unicode 值。

msvcrt.ungetch(char)

将字节字符串char“压回”到控制台缓冲区;它将是getch()getche()下次读取的字符。

msvcrt.ungetwch(unicode_char)

ungetch()的宽字符变体,接受 Unicode 值。

其他函数

msvcrt.heapmin()

强制malloc()堆清理自身并返回未使用的块到操作系统。如果失败,这将引发OSError

msvcrt.CRT_ASSEMBLY_VERSION

CRT 程序集版本,来自 crtassem.h 头文件。

msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN

VC 程序集公钥令牌,来自 crtassem.h 头文件。

msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIX

库程序集名称前缀,来自 crtassem.h 头文件。