msvcrt
--- 來自 MS VC++ 運(yùn)行時(shí)的有用例程?
這些函數(shù)提供了對(duì) Windows 平臺(tái)上一些有用功能的訪問。一些更高級(jí)別的模塊使用這些函數(shù)來構(gòu)建其服務(wù)的 Windows 實(shí)現(xiàn)。 例如, getpass
模塊在實(shí)現(xiàn) getpass()
函數(shù)時(shí)使用了這些函數(shù)。
關(guān)于這些函數(shù)的更多信息可以在平臺(tái) API 文檔中找到。
該模塊實(shí)現(xiàn)了控制臺(tái) I/O API 的普通和寬字符變體。普通的 API 只處理ASCII字符,國(guó)際化應(yīng)用受限。應(yīng)該盡可能地使用寬字符 API 。
文件操作?
- msvcrt.locking(fd, mode, nbytes)?
基于文件描述符 fd 從 C 運(yùn)行時(shí)鎖定文件的某一部分。 失敗時(shí)引發(fā)
OSError
。 鎖定的文件區(qū)域從當(dāng)前文件位置開始擴(kuò)展 nbytes 個(gè)字節(jié),并可能持續(xù)到超出文件末尾。 mode 必須為下面列出的LK_*
之一。 一個(gè)文件中的多個(gè)區(qū)域可以被同時(shí)鎖定,但是不能重疊。 相鄰區(qū)域不會(huì)被合并;它們必須單獨(dú)被解鎖。引發(fā)一個(gè) 審計(jì)事件
msvcrt.locking
,附帶參數(shù)fd
,mode
,nbytes
。
- msvcrt.LK_LOCK?
- msvcrt.LK_RLCK?
鎖定指定的字節(jié)數(shù)據(jù)。 如果字節(jié)數(shù)據(jù)無法被鎖定,程序會(huì)在 1 秒之后立即重試。 如果在 10 次嘗試后字節(jié)數(shù)據(jù)仍無法被鎖定,則會(huì)引發(fā)
OSError
。
- msvcrt.LK_NBLCK?
- msvcrt.LK_NBRLCK?
鎖定指定的字節(jié)數(shù)據(jù)。 如果字節(jié)數(shù)據(jù)無法被鎖定,則會(huì)引發(fā)
OSError
。
- msvcrt.LK_UNLCK?
解鎖指定的字節(jié)數(shù)據(jù),該對(duì)象必須在之前被鎖定。
- msvcrt.setmode(fd, flags)?
設(shè)置文件描述符 fd 的行結(jié)束符轉(zhuǎn)寫模式。 要將其設(shè)為文本模式,則 flags 應(yīng)當(dāng)為
os.O_TEXT
;設(shè)為二進(jìn)制模式,則應(yīng)當(dāng)為os.O_BINARY
。
- msvcrt.open_osfhandle(handle, flags)?
基于文件句柄 handle 創(chuàng)建一個(gè) C 運(yùn)行時(shí)文件描述符。 flags 形參應(yīng)當(dāng)
os.O_APPEND
,os.O_RDONLY
和os.O_TEXT
按位 OR 的結(jié)果。 返回的文件描述符可以被用作os.fdopen()
的形參以創(chuàng)建一個(gè)文件對(duì)象。引發(fā)一個(gè) 審計(jì)事件
msvcrt.open_osfhandle
,附帶參數(shù)handle
,flags
。
控制臺(tái) I/O?
- msvcrt.kbhit()?
如果有某個(gè)按鍵正在等待被讀取則返回
True
。
- msvcrt.getch()?
讀取一個(gè)按鍵并將結(jié)果字符返回為一個(gè)字節(jié)串。 不會(huì)有內(nèi)容回顯到縫制臺(tái)。 如果還沒有任何鍵被按下此調(diào)用將會(huì)阻塞,但它將不會(huì)等待 Enter 被按下。 如果按下的鍵是一個(gè)特殊功能鍵,此函數(shù)將返回
'\000'
或'\xe0'
;下一次調(diào)用將返回鍵代碼。 Control-C 按鈕無法使用此函數(shù)來讀取。
- msvcrt.putch(char)?
將字符串 char 打印到終端,不使用緩沖區(qū)。