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

来自菜鸟教程
Python/docs/2.7/library/msvcrt
跳转至:导航、​搜索

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

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

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

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

35.2.1. 文件操作

msvcrt.locking(fd, mode, nbytes)
根据来自 C 运行时的文件描述符 fd 锁定文件的一部分。 失败时升高 IOError。 文件的锁定区域从当前文件位置扩展 nbytes 个字节,并且可能会继续超出文件末尾。 mode 必须是下面列出的 LK_* 常量之一。 一个文件中的多个区域可以同时被锁定,但不能重叠。 相邻区域不合并; 它们必须单独解锁。
msvcrt.LK_LOCK

msvcrt.LK_RLCK

锁定指定的字节。 如果无法锁定字节,程序会在 1 秒后立即再次尝试。 如果在 10 次尝试后无法锁定字节,则引发 IOError
msvcrt.LK_NBLCK

msvcrt.LK_NBRLCK

锁定指定的字节。 如果无法锁定字节,则引发 IOError
msvcrt.LK_UNLCK
解锁指定的字节,这些字节以前必须被锁定。
msvcrt.setmode(fd, flags)
为文件描述符 fd 设置行尾转换模式。 要将其设置为文本模式,flags 应为 os.O_TEXT; 对于二进制,它应该是 os.O_BINARY
msvcrt.open_osfhandle(handle, flags)
从文件句柄 句柄 创建 C 运行时文件描述符。 flags 参数应该是 os.O_APPENDos.O_RDONLYos.O_TEXT 的按位 OR。 返回的文件描述符可用作 os.fdopen() 的参数以创建文件对象。
msvcrt.get_osfhandle(fd)
返回文件描述符 fd 的文件句柄。 如果 fd 未被识别,则升高 IOError


35.2.2. 控制台输入/输出

msvcrt.kbhit()
如果按键正在等待读取,则返回 true。
msvcrt.getch()
读取按键并返回结果字符。 控制台没有回显任何内容。 如果按键不可用,此调用将阻塞,但不会等待按下 Enter。 如果按下的键是特殊功能键,则返回 '\000''\xe0'; 下一次调用将返回键码。 使用此功能无法读取 Control-C 按键。
msvcrt.getwch()

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

2.6 版中的新功能。

msvcrt.getche()
getch() 类似,但如果它代表可打印字符,则按键将被回显。
msvcrt.getwche()

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

2.6 版中的新功能。

msvcrt.putch(char)
不缓冲地将字符 char 打印到控制台。
msvcrt.putwch(unicode_char)

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

2.6 版中的新功能。

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

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

2.6 版中的新功能。


35.2.3. 其他功能

msvcrt.heapmin()
强制 malloc() 堆自行清理并将未使用的块返回给操作系统。 失败时,这会引发 IOError