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


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

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

    在 3.3 版更改: 此模块中过去会引发 的操作现在将引发 OSError

    (fd, mode, nbytes)

    基于文件描述符 fd 从 C 运行时锁定文件的某一部分。 失败时引发 。 锁定的文件区域从当前文件位置开始扩展 nbytes 个字节,并可能持续到超出文件末尾。 mode 必须为下面列出的 LK_* 之一。 一个文件中的多个区域可以被同时锁定,但是不能重叠。 相邻区域不会被合并;它们必须单独被解锁。

    msvcrt.LK_LOCK

    msvcrt.LK_RLCK

    锁定指定的字节数据。 如果字节数据无法被锁定,程序会在 1 秒之后立即重试。 如果在 10 次尝试后字节数据仍无法被锁定,则会引发 OSError

    msvcrt.LK_NBLCK

    msvcrt.LK_NBRLCK

    锁定指定的字节数据。 如果字节数据无法被锁定,则会引发 。

    msvcrt.LK_UNLCK

    (fd, flags)

    设置文件描述符 fd 的行结束符转写模式。 要将其设为文本模式,则 flags 应当为 os.O_TEXT;设为二进制模式,则应当为 。

    msvcrt.open_osfhandle(handle, flags)

    基于文件句柄 handle 创建一个 C 运行时文件描述符。 flags 形参应当 os.O_APPEND, 和 os.O_TEXT 按位 OR 的结果。 返回的文件描述符可以被用作 的形参以创建一个文件对象。

    msvcrt.get_osfhandle(fd)

    返回文件描述符 fd 的文件句柄。 如果 fd 不能被识别则会引发 OSError

    msvcrt.kbhit()

    Return true if a keypress is waiting to be read.

    msvcrt.getch()

    读取一个按键并将结果字符返回为一个字节串。 不会有内容回显到缝制台。 如果还没有任何键被按下此调用将会阻塞,但它将不会等待 Enter 被按下。 如果按下的键是一个特殊功能键,此函数将返回 '\000''\xe0';下一次调用将返回键代码。 Control-C 按钮无法使用此函数来读取。

    ()

    的宽字符版本,返回一个 Unicode 值。

    类似于 getch(),但按键如果表示一个可打印字符则它将被回显。

    msvcrt.getwche()

    的宽字符版本,返回一个 Unicode 值。

    msvcrt.putch(char)

    将字符串 char 打印到终端,不使用缓冲区。

    msvcrt.putwch(unicode_char)

    putch() 的宽字符版本,接受一个 Unicode 值。

    msvcrt.ungetch(char)

    使得字节串 char 被“推回”终端缓冲区;它将是被 或 getche() 读取的下一个字符。

    msvcrt.ungetwch(unicode_char)

    的宽字符版本,接受一个 Unicode 值。

    ()