msvcrt — 來自 MS VC++ 執行時的實用例程


這些函式提供了對 Windows 平臺上一些實用功能的訪問。一些更高級別的模組使用這些函式來構建其服務的 Windows 實現。例如,getpass 模組在其 getpass() 函式的實現中使用了此模組。

有關這些函式的更多文件,請參閱平臺 API 文件。

該模組實現了控制檯 I/O API 的普通字元和寬字元變體。普通 API 僅處理 ASCII 字元,對於國際化應用程式的用途有限。應儘可能使用寬字元 API。

在 3.3 版本中更改: 此模組中的操作現在引發 OSError,之前引發的是 IOError

檔案操作

msvcrt.locking(fd, mode, nbytes)

根據 C 執行時的檔案描述符 fd 鎖定檔案的一部分。失敗時引發 OSError。檔案的鎖定區域從當前檔案位置開始延伸 nbytes 位元組,並可能超出檔案末尾。mode 必須是下面列出的 LK_* 常量之一。檔案中可以同時鎖定多個區域,但不能重疊。相鄰區域不會合並;它們必須單獨解鎖。

使用引數 fdmodenbytes 引發 審計事件 msvcrt.locking

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_APPENDos.O_RDONLYos.O_TEXTos.O_NOINHERIT 的按位 OR。返回的檔案描述符可以用作 os.fdopen() 的引數以建立檔案物件。

預設情況下,檔案描述符是可繼承的。傳遞 os.O_NOINHERIT 標誌使其不可繼承。

使用引數 handleflags 引發 審計事件 msvcrt.open_osfhandle

msvcrt.get_osfhandle(fd)

返回檔案描述符 fd 的檔案控制代碼。如果無法識別 fd,則引發 OSError

使用引數 fd 引發 審計事件 msvcrt.get_osfhandle

控制檯 I/O

msvcrt.kbhit()

如果有一個按鍵等待讀取,則返回非零值。否則,返回 0。

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 值。

其他函式

msvcrt.heapmin()

強制 malloc() 堆清理自身並將未使用的塊返回給作業系統。 如果失敗,這將引發 OSError

msvcrt.set_error_mode(mode)

更改 C 執行時為可能結束程式的錯誤寫入錯誤訊息的位置。 mode 必須是下面列出的 OUT_* 常量之一或 REPORT_ERRMODE。 如果發生錯誤,則返回舊設定或 -1。 僅在 Python 的除錯版本 中可用。

msvcrt.OUT_TO_DEFAULT

錯誤接收器由應用程式的型別確定。 僅在 Python 的除錯版本 中可用。

msvcrt.OUT_TO_STDERR

錯誤接收器是標準錯誤。 僅在 Python 的除錯版本 中可用。

msvcrt.OUT_TO_MSGBOX

錯誤接收器是一個訊息框。 僅在 Python 的除錯版本 中可用。

msvcrt.REPORT_ERRMODE

報告當前的錯誤模式值。 僅在 Python 的除錯版本 中可用。

msvcrt.CrtSetReportMode(type, mode)

指定 MS VC++ 執行時中 _CrtDbgReport() 生成的特定報告型別的目標位置。 type 必須是下面列出的 CRT_* 常量之一。 mode 必須是下面列出的 CRTDBG_* 常量之一。 僅在 Python 的除錯版本 中可用。

msvcrt.CrtSetReportFile(type, file)

在使用 CrtSetReportMode() 指定 CRTDBG_MODE_FILE 後,您可以指定接收訊息文字的檔案控制代碼。 type 必須是下面列出的 CRT_* 常量之一。 file 應該是您想要指定的檔案控制代碼。 僅在 Python 的除錯版本 中可用。

msvcrt.CRT_WARN

不需要立即關注的警告、訊息和資訊。

msvcrt.CRT_ERROR

錯誤、無法恢復的問題以及需要立即關注的問題。

msvcrt.CRT_ASSERT

斷言失敗。

msvcrt.CRTDBG_MODE_DEBUG

將訊息寫入偵錯程式的輸出視窗。

msvcrt.CRTDBG_MODE_FILE

將訊息寫入使用者提供的檔案控制代碼。 應呼叫 CrtSetReportFile() 來定義要用作目標位置的特定檔案或流。

msvcrt.CRTDBG_MODE_WNDW

建立一個訊息框來顯示訊息以及 AbortRetryIgnore 按鈕。

msvcrt.CRTDBG_REPORT_MODE

返回指定 type 的當前 mode

msvcrt.CRT_ASSEMBLY_VERSION

來自 crtassem.h 標頭檔案的 CRT 程式集版本。

msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN

來自 crtassem.h 標頭檔案的 VC 程式集公鑰令牌。

msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIX

來自 crtassem.h 標頭檔案的庫程式集名稱字首。