10章「汎用OS・ランタイムサービス」の対策ポイントと例題
10章「汎用OS・ランタイムサービス」からは本番40問中2問が出ます。コマンドライン引数の解析(argparse)とログ出力(logging)が中心の章です。
- os
- sys
- argparse
- logging
- subprocess
- time
この章の出題数と位置づけ
10章「汎用OS・ランタイムサービス」からは本番40問のうち2問が出題されます。 全体に占める割合は5.0%で、15章中6番目タイの出題数です(同じ2問の章が他に7章あります)。 合格に必要なのは28問正解(12問まで不正解可)なので、 この章の2問をどこまで取りに行くかは、他の章との兼ね合いで決めるのが現実的です。
対策のポイント
- logging のレベルは DEBUG < INFO < WARNING < ERROR < CRITICAL の順で、既定は WARNING 以上しか出ません。
- argparse の add_argument で、位置引数とオプション引数(--つき)をどう書き分けるかを押さえます。
- print ではなく logging を使う理由(出力先とレベルを後から変えられる)が問われることがあります。
- os.environ による環境変数の読み書き、sys.argv との違いも範囲です。
この章の例題(3問)
当サイトで実際に出題している問題から3問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題1. logging モジュールでルートロガーの既定のログレベルはどれか。
- 正解WARNING
- DEBUG
- INFO
- ERROR
解説: 既定は WARNING なので、設定なしだと logging.info() は何も出力されない。DEBUG や INFO を出すには basicConfig(level=logging.DEBUG) 等で下げる必要がある。レベルの順は DEBUG < INFO < WARNING < ERROR < CRITICAL。
例題2. コマンドラインで --verbose を指定しなかった場合、この引数の値はどうなるか。
parser.add_argument("--verbose", action="store_true")
- 正解False
- None
- True
- 空文字列
解説: store_true は既定値が False、指定時に True になる。逆に store_false は既定 True。default を明示すればその値が優先される。
例題3. os モジュールの関数の説明として正しいものはどれか。
- 正解rename(src, dst) はファイル・ディレクトリの名前を変更する
- getcwd(path) は作業ディレクトリを設定する
- listdir(path='.') はディレクトリだけを返す
- remove(path) はディレクトリを削除する
解説: getcwd は get current working directory の略で、引数を取らない取得専用。listdir はファイルもディレクトリも区別せず全部返す。remove はファイル専用。rename は両方に使え、パスを変えれば移動にもなる。
この章は当サイトに全5問を収録しています。残りはドリルの「章別に解く」から解けます。