AI資格ドリル
資格を選ぶ↓

第10章 標準ライブラリめぐり(40問中4問)

Python3基礎試験の標準ライブラリ:やりたいこと別のモジュール一覧

第10章は、やりたいことに合うモジュールを選ぶ問題が中心です。このページでは、公式チュートリアルが取り上げるモジュールを12の目的に分け、正規表現・統計・日付・圧縮の出力はPython 3.9.6で実際に実行して確かめます。覚えるのは、目的とモジュール名の組、そして import os と from os import * の違いなど、紛らわしい4つの組み合わせです。

このページは試験の学習用の整理です。公式の問題は転載せず、コードはすべて説明用に作った例です。

公式情報の確認

試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-09-18。

試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。

結論

  1. OS操作は os、ファイルのコピー・移動は shutil、ワイルドカード検索は glob、引数は sys.argv か argparse
  2. 文字列の高度な処理は re、数学は math、乱数は random、平均・中央値・分散は statistics
  3. 日付は datetime、圧縮は zlib、小さなコード片の時間計測は timeit、テストは doctest か unittest
  4. from os import * は os.open() が組み込みの open() を遮蔽するので避け、import os と書く

やりたいこと別のモジュール一覧

公式チュートリアルの第10章は、標準ライブラリを用途ごとに紹介しています。試験では、目的を示してモジュールを選ばせる形が考えられるので、左の列の目的から右の列のモジュールを引けるようにしておきます。

やりたいことモジュール代表的な関数・クラスひとこと
OSと対話する・作業ディレクトリを扱うosos.getcwd()・os.chdir()from os import * ではなく import os を使う
ファイルのコピー・移動shutilshutil.copyfile()・shutil.move()日常的なファイル管理向けの高水準インターフェース
ワイルドカードでファイルを探すglobglob.glob('*.py')ファイル名のリストを返す
コマンドライン引数を受け取るsys / argparsesys.argv・ArgumentParser単純なら sys.argv、オプション処理なら argparse
エラーメッセージを別に出すsyssys.stderrstdout をリダイレクトしても読める
正規表現で文字列を処理するrere.findall()・re.sub()単純な処理は文字列メソッドの方が読みやすい
数学関数・乱数・統計math / random / statisticsmath.cos()・random.sample()・statistics.mean()平均・中央値・分散を計算できる
URLからデータ取得・メール送信urllib.request / smtpliburlopen()・SMTP().sendmail()取得は urllib、送信は smtplib
日付・時刻の計算と書式化datetimedate.today()・strftime()日付同士の引き算で経過日数が求まる
データの圧縮・展開zlib ほかzlib.compress()・zlib.decompress()gzip・bz2・lzma・zipfile・tarfile も同じ系統
実行時間の計測timeit / profile・pstatsTimer().timeit()小さなコード片は timeit、大きなブロックは profile
テストdoctest / unittestdoctest.testmod()・unittest.main()docstring内か、別ファイルのクラスか

このほか、公式チュートリアルは json(JSONの解析)、csv(CSVの読み書き)、sqlite3(SQLiteのラッパー)、email(電子メールの管理)、xml.etree.ElementTree(XML処理)なども標準で使えるモジュールとして紹介しています。データ形式の名前がそのままモジュール名になっているものは、名前から用途を引けます。

実行結果で確かめる

公式チュートリアルが示す例のうち、結果が1行で確かめられるものをPython 3.9.6で実行しました。出力を読み取る問題では、返り値の型とリストの中身が問われます。

コード実行結果ひとこと
import re print(re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest'))['foot', 'fell', 'fastest']f で始まる単語をすべてリストで返す
import re print(re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat'))cat in the hat重複した単語を1つにまとめる
import math print(math.log(1024, 2))10.0底を2とする対数。整数ではなく浮動小数点で返る
import statistics print(statistics.mean([20, 30, 70])) print(statistics.median([1, 3, 2, 10]))40 2.5mean は平均、median は中央値。偶数個の中央値は中央2つの平均
import datetime as dt print(dt.date(2026, 10, 28) - dt.date(2026, 10, 1))27 days, 0:00:00日付同士の引き算は timedelta になる
import datetime as dt print(dt.date(2026, 10, 28).strftime('%Y/%m/%d'))2026/10/28strftime で書式を指定して文字列にする
import zlib s = b'witch which has which witches wrist watch' c = zlib.compress(s) print(len(s), len(c), zlib.decompress(c) == s)41 37 True圧縮して元に戻せる。短い文字列では縮みが小さい

日付同士の引き算は日数の差(timedelta)になり、re.findall() は一致した部分のリストを返します。公式チュートリアルは、re は高度な処理のためのもので、最小限の機能だけが必要なら読みやすくデバッグしやすい文字列メソッドの方がお勧めだと述べています。

紛らわしい組み合わせ

import os と from os import *

公式チュートリアルによると、from os import * を使うと os.open() が組み込みの open() を遮蔽します。そのため、import os を使うよう勧めています。名前を取り込みすぎると、同じ名前の組み込み関数が隠れる、と覚えます。

sys.argv と argparse

sys.argv にはコマンドライン引数がリストで入ります。demo.py を python demo.py one two three と呼ぶと、sys.argv は ['demo.py', 'one', 'two', 'three'] です。先頭の要素はスクリプト名で、引数は2番目からです。オプションの処理まで必要なら、ArgumentParser で作り、add_argument() で定義し、parse_args() で解析する argparse を使います。

doctest と unittest

doctest は docstring 内のサンプル実行結果を検査し、doctest.testmod() で走らせます。unittest は別ファイルに書き、unittest.TestCase を継承したクラスに assertEqual() や assertRaises() を使うテストメソッドを書いて、unittest.main() で実行します。docstring の中に書くのが doctest、クラスとして別に書くのが unittest です。

timeit と profile

timeit は Timer にコード文字列を渡して小さなコード片の実行時間を計ります。profile と pstats は、より大きなコードブロックで処理時間のボトルネックを判定する道具です。計る範囲が小さければ timeit、大きければ profile です。

Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)

試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

よくある質問

第10章の標準ライブラリは、何問出ますか?

このサイトが整理した公式の章別出題数では、40問中4問(10.0%)です。第4章・第5章・第3章に次ぐ位置づけ(第8章と同数)で、モジュール名と役割を結びつける問題が中心になります。

import os と from os import * は、なぜ分けて覚えるのですか?

公式チュートリアルによると、from os import * を使うと os.open() が組み込みの open() を遮蔽してしまうため、import os を使うよう勧めています。ファイルを開く open() の動きが変わってしまうのが理由です。

doctest と unittest は、どう違いますか?

doctest は docstring に埋め込んだ実行例を自動で検査し、doctest.testmod() で走らせます。unittest は別ファイルにテストコードを書く形式で、unittest.TestCase を継承したクラスにテストメソッドを書き、unittest.main() で全テストを実行します。

timeit と profile は、どう使い分けますか?

公式チュートリアルによると、timeit は小さなコード片の実行時間を計測する道具です。profile と pstats は、それより大きなコードブロックで処理時間のボトルネックを見つけるときに使います。

次に読むと効率的なページ

執筆: ミナト編集部(運営者情報を見る)