実践・上級問題チェック
問題 29 /40
次のコードを実行した場合、【A】と【B】の結果として正しいものはどれか。 import tempfile from pathlib import Path with tempfile.TemporaryFile() as f: p = Path(f.name) print(p.exists()) 【A】 print(p.exists()) 【B】
選択 1
【A】 エラーになる 【B】 エラーになる
選択 2
【A】 True 【B】 False
選択 3
【A】 True 【B】 True
選択 4
【A】 True 【B】 エラーになる
解説
選択肢1が正解です。
TemporaryFile()関数で作成した一時ファイルは、名前を持ったファイルとして作成される保証がないため、exists()メソッドで存在を確認することができません。
問題文の場合、【A】はTypeErrorになり、【B】はNameErrorになります。
NamedTemporaryFile()関数を使用すると、名前が付いたファイルを作成できます。
問題文のTemporaryFile()関数をNamedTemporaryFile()関数に書き換えると、【A】でTrueとなった後、with文を抜けてファイルが閉じられ、【B】でFalseとなります。
(公式書籍 p.256-257)