[解決済み] ディレクトリ作成時にPythonの "FileExists "エラーが発生する
2022-02-25 21:08:26
質問
クラスタシステム上でPythonから複数のスレッドを並列に走らせています。各 Python スレッドは、以下のディレクトリに出力します。
mydir
. 各スクリプトは、出力する前に、次のことをチェックします。
マイディレクトリ
が存在し、存在しない場合は作成します。
if not os.path.isdir(mydir):
os.makedirs(mydir)
が、これではエラーになります。
os.makedirs(self.log_dir)
File "/usr/lib/python2.6/os.py", line 157, in makedirs
mkdir(name,mode)
OSError: [Errno 17] File exists
レースコンディションが原因で、あるジョブで ディレ を先に実行します。このようなことはあり得るのでしょうか?もしそうなら、このエラーはどのように回避できるのでしょうか?
レースコンディションではないと思うので、Pythonの他の問題がこの奇妙なエラーを引き起こす可能性はないかと考えていました。
解決方法は?
何かをチェックしてからそれを実行するまでの間にコードが実行されることがあれば、いつでもレースコンディションを発生させることができます。これを避ける1つの方法(そしてPythonの通常の方法)は、単にtryしてから例外を処理することです。
while True:
mydir = next_dir_name()
try:
os.makedirs(mydir)
break
except OSError, e:
if e.errno != errno.EEXIST:
raise
# time.sleep might help here
pass
もし多くのスレッドが予測可能な一連のディレクトリを作ろうとすると、これでも多くの例外が発生しますが、最終的にはそこに到達することができます。そのような場合は、ディレクトリを作成するスレッドを1つだけにしたほうがよいでしょう。
関連
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonでディレクトリ内の拡張子.txtのファイルをすべて検索する
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
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によるjieba分割ライブラリ
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
PythonによるExcelファイルの一括操作の説明
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み】マジックナンバーとは何ですか、なぜ悪いのですか?[クローズド]