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


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

有關這些函式的更多文件可在平臺 API 文件中找到。

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

3.3 版本中已更改: 此模組中的操作現在在之前丟擲 IOError 的地方丟擲 OSError

檔案操作

msvcrt.locking(fd, mode, nbytes)

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

引發一個 審計事件 msvcrt.locking,引數為 fdmodenbytes

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

檔案描述符預設可繼承。傳入 os.O_NOINHERIT 標誌可使其不可繼承。

引發一個 審計事件 msvcrt.open_osfhandle,引數為 handleflags

msvcrt.get_osfhandle(fd)

返回檔案描述符 fd 的檔案控制代碼。如果 fd 未被識別,則丟擲 OSError

引發一個 審計事件 msvcrt.get_osfhandle,引數為 fd

控制檯 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

CRT 彙編版本,來自 crtassem.h 標頭檔案。

msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN

VC 彙編公鑰令牌,來自 crtassem.h 標頭檔案。

msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIX

庫彙編名稱字首,來自 crtassem.h 標頭檔案。