34.2. msvcrt
—从MS VC++运行时的有用的例程
这些功能提供对Windows平台上一些有用功能的访问。一些更高级别的模块使用这些功能来构建其服务的Windows实现。例如,getpass
模块在实现 getpass()
功能时使用它。
有关这些功能的更多文档可以在Platform API文档中找到。
该模块实现控制台I/O API的正常和宽字符变量。普通API仅处理ASCII字符,并且对于国际化应用程序的使用有限。应尽可能使用宽字符API。
34.2.1. 文件操作
-
msvcrt.
locking
(fd, mode, nbytes)
基于文件描述符 fd 从C运行时锁定文件的一部分。失败时提高 OSError
。文件的锁定区域从 nbytes 字节的当前文件位置延伸,并且可以继续超出文件的结尾。 mode 必须是下面列出的 LK_*
常量之一。文件中的多个区域可以同时被锁定,但是可以不重叠。相邻区域不合并;它们必须单独解锁。
-
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_APPEND
,os.O_RDONLY
和 os.O_TEXT
的按位或。返回的文件描述符可以用作 os.fdopen()
的参数以创建文件对象。
-
msvcrt.
get_osfhandle
(fd)
返回文件描述符 fd 的文件句柄。如果 fd 无法识别,则提高 OSError
。
34.2.2. 控制台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值。
34.2.3. 其他功能
-
msvcrt.
heapmin
()
强制 malloc()
堆清理自己并将未使用的块返回到操作系统。失败时,这会提高 OSError
。