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

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

有关这些Function的更多文档,请参见 Platform API 文档。

该模块实现了控制台 I/O api 的普通和宽字符变体。普通 API 仅处理 ASCII 字符,并且在国际化应用程序中用途有限。应尽可能使用 Wide char API。

35.2.1. 文件操作

  • msvcrt. locking(* fd mode nbytes *)

    • 从 C 运行时基于文件 Descriptors* fd 锁定文件的一部分。失败时引发IOError。文件的锁定区域从当前文件位置开始扩展了 nbytes *个字节,并且可能会持续到文件末尾。 * mode *必须是下面列出的LK_*常量之一。文件中的多个区域可以同时锁定,但不能重叠。相邻区域不合并;它们必须分别解锁。
  • msvcrt. LK_LOCK

  • msvcrt. LK_RLCK

    • 锁定指定的字节。如果无法锁定字节,则程序将在 1 秒后立即重试。如果在try 10 次之后无法锁定字节,则引发IOError
  • msvcrt. LK_NBLCK

  • msvcrt. LK_NBRLCK

    • 锁定指定的字节。如果字节不能锁定,则引发IOError
  • msvcrt. LK_UNLCK

    • 解锁指定的字节,该字节必须先前已被锁定。
  • msvcrt. setmode(* fd flags *)

    • 设置文件 Descriptors* fd 的行尾转换模式。要将其设置为文本模式, flags *应该为os.O_TEXT;对于二进制文件,应为os.O_BINARY
  • msvcrt. open_osfhandle(* handle flags *)

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

    • 返回文件 Descriptors* fd 的文件句柄。如果无法识别 fd *,则引发IOError

35.2.2. 控制台 I/O

  • msvcrt. kbhit ( )

    • 如果正在 await 读取按键,则返回 true。
  • msvcrt. getch ( )

    • 读取按键并返回结果字符。什么也没有回应到控制台。如果尚未提供按键,则该呼叫将被阻止,但不会 await 按下 Enter 键。如果按下的键是特殊Function键,则将返回'\000''\xe0';下一次调用将返回键码。使用此Function无法读取 Control-C 按键。
  • msvcrt. getwch ( )

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

2.6 版的新Function。

  • msvcrt. getche ( )

    • getch()相似,但是如果按键代表可打印的字符,则将回显按键。
  • msvcrt. getwche ( )

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

2.6 版的新Function。

  • msvcrt. putch(* char *)

    • 在不缓冲的情况下将字符* char *打印到控制台。
  • msvcrt. putwch(* unicode_char *)

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

2.6 版的新Function。

  • msvcrt. ungetch(* char *)

    • 使字符* char *被“推回”到控制台缓冲区中;它将是getch()getche()读取的下一个字符。
  • msvcrt. ungetwch(* unicode_char *)

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

2.6 版的新Function。

35.2.3. 其他Function

  • msvcrt. heapmin ( )
    • 强制malloc()堆清理自身并将未使用的块返回到 os。失败时,将引发IOError