11章「ファイルとディレクトリ」の対策ポイントと例題
11章「ファイルとディレクトリへのアクセス」からは本番40問中2問が出ます。pathlib を中心としたパス操作と、ファイルのコピー・圧縮を問う章です。
- pathlib
- os.path
- shutil
- tempfile
- glob
- zipfile
この章の出題数と位置づけ
11章「ファイルとディレクトリ」からは本番40問のうち2問が出題されます。 全体に占める割合は5.0%で、15章中6番目タイの出題数です(同じ2問の章が他に7章あります)。 合格に必要なのは28問正解(12問まで不正解可)なので、 この章の2問をどこまで取りに行くかは、他の章との兼ね合いで決めるのが現実的です。
対策のポイント
- pathlib.Path の / による連結、.name / .stem / .suffix / .parent が返す値をそれぞれ区別します。
- open() のモード(r / w / a / x、テキストとバイナリ)と、w が既存内容を消すことを確認します。
- shutil.copy と shutil.copy2 の違い(メタデータを保つかどうか)は選択肢になりやすい点です。
- glob のワイルドカード、** による再帰的な探索の書き方も押さえます。
この章の例題(3問)
当サイトで実際に出題している問題から3問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題1. 実行結果として正しいものを選べ。
from pathlib import Path
print(Path("/tmp/a/report.txt").suffix)
- 正解'.txt'
- 'txt'
- 'report.txt'
- 'report'
解説: suffix はドットを含む拡張子。name が 'report.txt'、stem が 'report'、parent が '/tmp/a'。この4つの違いは頻出。
例題2. 既存ファイルの内容を残したまま末尾に書き足したい。open() に渡すモードはどれか。
- 正解"a"
- "w"
- "x"
- "r"
解説: "a" は追記。"w" は既存内容を切り詰めてしまう。"x" は排他的作成で、ファイルが既にあると FileExistsError。"r" は読み込み専用。
例題3. pathlib のメソッドの説明として誤っているものはどれか。
- 正解Path.unlink() はディレクトリを削除する
- Path.cwd() は現在のディレクトリをパスオブジェクトで返す
- Path.exists() は存在する場合に True を返す
- Path.touch() は空のファイルを作成する
解説: unlink はファイル(およびシンボリックリンク)の削除。空ディレクトリの削除は Path.rmdir。名前は、実体への参照リンクを外すという Unix の考え方から来ている。
この章は当サイトに全7問を収録しています。残りはドリルの「章別に解く」から解けます。