34.2. msvcrt - 从MS VC ++运行时的有用例程

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

有关这些功能的更多文档可以在Platform API文档中找到。

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

在版本3.3中更改:此模块中的操作现已引发OSError其中IOError被引发。

34.2.1. File Operations

msvcrt.locking(fd, mode, nbytes)

根据C运行时文件描述器fd锁定文件的一部分。失败时引发OSError文件的锁定区域从nbytes字节的当前文件位置延伸,并且可以继续超出文件结尾。模式必须是下面列出的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的行末翻译模式。要将其设置为文本模式,标志应为os.O_TEXT;对于二进制,应为os.O_BINARY

msvcrt.open_osfhandle(handle, flags)

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

msvcrt.get_osfhandle(fd)

返回文件描述器fd的文件句柄。引发OSError如果fd无法识别。

34.2.2. Console I/O

msvcrt.kbhit()

如果键盘正在等待读取,则返回true。

msvcrt.getch()

读取按键并将结果字符作为字节字符串返回。没有回声到控制台。如果按键不可用,则此调用将阻止,但不会等待按下Enter如果按下的键是特殊功能键,则将返回'\000''\xe0';下一个调用将返回键码。使用此功能无法读取Control-C按键。

msvcrt.getwch()

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

msvcrt.getche()

类似于getch(),但是如果它代表一个可打印的字符,keypress将被回显。

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. Other Functions

msvcrt.heapmin()

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