本問題では「Pythonと環境・Pythonの基礎」のうち「Pythonのモジュール(logging、pickle、pathlib、datetime)」について学びます。
本問題の解説はYouTube動画でもご覧いただけます。
【解説動画】 第1回Python3データ分析模擬試験 第06問
※当解説動画シリーズはPythonエンジニア育成推進協会に認定された「Python 3 エンジニア認定データ分析試験」の参考教材です。
問題
モジュールに関する次の記述のうち誤っているものはどれか。
① loggingモジュールはログレベルを指定して任意のファイルにフォーマットを指定してログの出力を行うことができ、たとえば、バッチ処理などの途中経過を出力する用途に用いる。
② loggingモジュールのログレベルには、重要度の低い順にDEBUG、INFO、WARNING、ERROR、CRITICALの5つがある。
③ pickleモジュールは、Pythonのオブジェクトをシリアライズしてファイルなどで読み書きできるようにすることができ、標準出力をバッファリングして制御するために便利である。
④ Pythonでファイルのパスを扱うにはpathlibモジュールが便利である。globメソッドではファイル名をワイルドカード(*)で指定することもできる。
⑤ 日付などの処理にはdatetimeモジュールが便利である。たとえば、過去の日付から今日の日付を差し引いて経過日数を計算することができる。
解説
正解は選択肢③です。以下、解説します。
loggingモジュール
選択肢①と②がloggingモジュールに関するものなので、教科書の範囲で整理します。
loggingモジュールはバッチ処理など途中経過の出力に使われます。
使い方としては、右図「使用例」にあるように、インポートして、basicConfig関数の中で、出力したいfile名やログレベルや出力フォーマットを設定し、ログを出力します。
ログレベルの重要度は、低い順にDEBUG、INFO、WARNING、ERROR、CRITICALです。右に行くほど重大なエラーです。デフォルトはWarningです。
選択肢①
選択肢①は正しい肢です。
先ほど確認しましたとおり、basicConfig関数の中で、出力したいfile名やログレベルや出力フォーマットを設定しますし、用途も正しいです。
選択肢②
選択肢②も正しい肢です。ログレベルと重要度の順はこの機会におさえておきましょう。
選択肢③
選択肢③は、誤りの肢です。どの部分が誤りか、おわかりになりますか?
簡単にpickleモジュールについて整理します。
pickleモジュール
pickleモジュールというのは、「データを再利用するために、データの凍結・変換(直列化)と保存(永続化)」一度に行う仕組みです。
通常、プログラムで生成したデータは、プログラムの終了時に消えます。プログラムの終了後もそのデータを利用したい時などにpickleを使います。
選択肢③は、後半の「標準出力をバッファリングして制御するために便利である」の部分が誤っています。
「標準出力をバッファリングして制御する」ということをするのは、pickle(Python)ではなくPHP、具体的にはPHPのアウトプットバファリングです。右図はPHPのアウトプットバファリングの処理イメージです。
通常、PHPプログラムでechoすると、コンソール上にそのままhello worldと出力されますが、より長い複雑な文字列などのときに、コンソールへの出力を制御したい場合があります。
こうした場合にアウトプットバファリングで、バッファに一時保存しておき、バッファにためてからコンソールやファイルに出力します。これが「標準出力をバッファリングして制御する」ということです。先ほど見ました「pickleによるシリアライズと保存」という処理とは全く異なります。
選択肢④
選択肢④は、内容の正しい肢です。
例えば右図のように、現在のディレクトリにtest1とtest2という2つのテキストファイルがあったとします。
pathlibモジュールのglobメソッドで、ワイルドカードで「拡張子がtxtのすべてのファイル」と指定すると、それが取得できます。
選択肢⑤
選択肢⑤は、内容の正しい肢です。
datetimeモジュールについて、以下簡単に確認します。
datetimeモジュール
右表のうち「使用例」の一行目でdatetimeモジュールからインポートしているのが、日付と時刻を組み合わせたdatetimeクラスと、日付を表すdateクラスです。
各メソッドについては右表をご覧ください。
第1回Python3データ分析模擬試験第06問の解説は以上です。