msvcrt — MS VC++ 运行时中的实用例程


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

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

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

3.3 版本中已更改: 此模块中的操作现在在之前抛出 IOError 的地方抛出 OSError

文件操作

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_TEXTos.O_NOINHERIT 的按位或。返回的文件描述符可用作 os.fdopen() 的参数来创建文件对象。

文件描述符默认可继承。传入 os.O_NOINHERIT 标志可使其不可继承。

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

msvcrt.get_osfhandle(fd)

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

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

控制台 I/O

msvcrt.kbhit()

如果有按键正在等待读取,则返回非零值。否则返回 0。

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.set_error_mode(mode)

更改 C 运行时写入可能导致程序终止的错误消息的位置。mode 必须是下面列出的 OUT_* 常量之一或 REPORT_ERRMODE。返回旧设置,如果发生错误则返回 -1。仅在 Python 的调试版本中可用。

msvcrt.OUT_TO_DEFAULT

错误接收器由应用程序类型决定。仅在 Python 的调试版本中可用。

msvcrt.OUT_TO_STDERR

错误接收器是标准错误。仅在 Python 的调试版本中可用。

msvcrt.OUT_TO_MSGBOX

错误接收器是消息框。仅在 Python 的调试版本中可用。

msvcrt.REPORT_ERRMODE

报告当前错误模式值。仅在 Python 的调试版本中可用。

msvcrt.CrtSetReportMode(type, mode)

指定 MS VC++ 运行时中 _CrtDbgReport() 生成的特定报告类型的目标。type 必须是下面列出的 CRT_* 常量之一。mode 必须是下面列出的 CRTDBG_* 常量之一。仅在 Python 的调试版本中可用。

msvcrt.CrtSetReportFile(type, file)

在使用 CrtSetReportMode() 指定 CRTDBG_MODE_FILE 后,您可以指定文件句柄以接收消息文本。type 必须是下面列出的 CRT_* 常量之一。file 应为您要指定的文件句柄。仅在 Python 的调试版本中可用。

msvcrt.CRT_WARN

警告、消息和不需要立即关注的信息。

msvcrt.CRT_ERROR

错误、无法恢复的问题和需要立即关注的问题。

msvcrt.CRT_ASSERT

断言失败。

msvcrt.CRTDBG_MODE_DEBUG

将消息写入调试器的输出窗口。

msvcrt.CRTDBG_MODE_FILE

将消息写入用户提供的文件句柄。应调用 CrtSetReportFile() 来定义用作目标的文件或流。

msvcrt.CRTDBG_MODE_WNDW

创建消息框以显示消息以及 AbortRetryIgnore 按钮。

msvcrt.CRTDBG_REPORT_MODE

返回指定 type 的当前 mode

msvcrt.CRT_ASSEMBLY_VERSION

CRT 汇编版本,来自 crtassem.h 头文件。

msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN

VC 汇编公钥令牌,来自 crtassem.h 头文件。

msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIX

库汇编名称前缀,来自 crtassem.h 头文件。