msvcrt --- MS VC++ ランタイムの有用なルーチン群

ソースコード: PC/msvcrtmodule.c


このモジュールの関数は、 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_* 定数のいずれかでなければなりません。 ファイル内の複数の領域を同時にロックできますが、重複はできません。 隣接する領域は結合されず、それぞれ個別にロックを解除する必要があります。

引数 fd, mode, nbytes を指定して 監査イベント 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_APPEND、os.O_RDONLY、os.O_TEXT、os.O_NOINHERIT をビット単位 OR で組み合わせて指定します。 返されたファイル記述子を os.fdopen() の引数として渡すと、ファイルオブジェクトを作成できます。

ファイル記述子はデフォルトで継承可能です。 継承不可にするには os.O_NOINHERIT フラグを渡してください。

引数 handle, flags を指定して 監査イベント 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 をコンソールバッファに "押し戻し (push back)" ます; これにより、押し戻された文字は 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() が生成する特定のレポート種別について、1 つ以上の出力先を指定します。 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

Abort、Retry、Ignore ボタンとともにメッセージを表示するメッセージボックスを作成します。

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 ヘッダファイルにある Libraries アセンブリ名の接頭辞。