[解決済み] ファイル出力で自動的にディレクトリを作成する【重複】。
2022-03-23 04:53:14
質問
重複の可能性があります。
mkdir -p 機能を Python で使用する
ファイルを作りたいとします。
filename = "/foo/bar/baz.txt"
with open(filename, "w") as f:
f.write("FOOBAR")
これは
IOError
というのは
/foo/bar
は存在しない。
これらのディレクトリを自動的に生成するための最もpythonicな方法は何でしょうか?を明示的に呼び出す必要があるのでしょうか?
os.path.exists
と
os.mkdir
を1つ1つ表示させる(つまり、/fooの次に/foo/bar)のですか?
どのように解決するのですか?
Python 3.2+ では、次のことができます。 エレガント は以下のようにします。
import os
filename = "/foo/bar/baz.txt"
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, "w") as f:
f.write("FOOBAR")
古い Python では、あまりエレガントでない方法があります。
は
os.makedirs
関数がこれを行います。以下を試してみてください。
import os
import errno
filename = "/foo/bar/baz.txt"
if not os.path.exists(os.path.dirname(filename)):
try:
os.makedirs(os.path.dirname(filename))
except OSError as exc: # Guard against race condition
if exc.errno != errno.EEXIST:
raise
with open(filename, "w") as f:
f.write("FOOBAR")
を追加する理由は
try-except
ブロックの間にディレクトリが作成された場合に対応するためです。
os.path.exists
と
os.makedirs
を呼び出すことで、レースコンディションを回避することができます。
関連
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] ファイルを作成し、書き込むにはどうすればよいですか?
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] ファイルに行を書き込む正しい方法?
最新
-
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を使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み] Pythonでmkdir -p機能 [重複]する。
-
[解決済み】ネストされたディレクトリを安全に作成するには?