[解決済み】Pythonで、"with "ブロックの中でリターンしても、ファイルは閉じますか?
2022-03-25 05:12:36
質問
次のように考えてください。
with open(path, mode) as f:
return [line for line in f if condition]
ファイルは正しく閉じられるのでしょうか?
return
を何らかの方法で回避することができます。
コンテキストマネージャー
?
解決方法は?
はい、それは
finally
ブロックの後に
try
ブロックは常に実行されます(もちろん、python プロセスが異常な方法で終了しない限り)。
の例の1つにも書かれています。
PEP-343
の仕様である
with
ステートメントを使用します。
with locked(myLock):
# Code here executes with myLock held. The lock is
# guaranteed to be released when the block is left (even
# if via return or by an uncaught exception).
しかし、特筆すべきことは
open()
の呼び出しは
with
ブロックの中に
try..except
というブロックがありますが、これは通常、人が望むものではありません。
関連
-
PythonはWordの読み書きの変更操作を実装している
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] 文字列フォーマット:% vs. .format vs. f-stringリテラル
-
[解決済み] シェルコマンドの実行と出力のキャプチャ
-
[解決済み] Python の open() はファイルが存在しない場合、ファイルを作成しない
-
[解決済み] 組込み開関数におけるモードa、a+、w、w+、r+の違い?
-
[解決済み] Pythonで大きなファイルをリクエストでダウンロードする
-
[解決済み] Pythonの "with "文は何のために作られたのですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python Decorator 練習問題
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。