[解決済み] Pythonでファイルの読み込みと上書きをする
2022-07-14 09:39:35
質問
現在、使用しているのはこれです。
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.close()
しかし、問題は古いファイルが新しいファイルより大きいということです。そのため、新しいファイルの末尾に古いファイルの一部が残ってしまうんです。
どのように解決するのですか?
レースコンディションを避けるために、ファイルを閉じたり開き直したりしたくない場合は、次のようにします。
truncate
とする。
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()
また、機能的には、おそらく
よりクリーンで安全な
を使用して
open
をコンテキスト・マネージャーとして使用することで、エラーが発生してもファイル・ハンドラを閉じます!
with open(filename, 'r+') as f:
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
関連
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] if 節の終了方法
-
[解決済み] pandasのデータフレームでカスタムソートする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 追記ではなく、置換・上書きをする
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Celeryでタスクのステータスを確認するには?
-
[解決済み] IPythonの終了確認を無効にする
-
[解決済み] 条件を満たした場合にNumpyの要素を置き換える
-
[解決済み] ネストした辞書の項目からpandasのDataFrameを構築する
-
[解決済み] イテラブルを一定サイズのチャンクに分割する方法