Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。488件52海外サイトも含め検索しましたが、有効な解決策を見つけることができませんでした。お知恵をお貸し頂けないでしょうか。OS:Windowsos.makedirs()を使いディレクトリを作成した際、実際にディレクトリが作成されるまでに”少々”の時間がかかります。後続処理では当然ながらos.path.isdir()を使ってディレクトリが生成済みであるかどうかを確認したうえでファイル転送を行うようにしていますが、PCスペックによりますが約50%の確率でディレクトリ生成より前に処理が進んでしまいチェックの網にかかってしまいます。暫定処置としてos.makedirsの直後にtime.sleep(2)を埋め込んで時間をおいてから後続処理に進むようにしたところ表面的には解決しましたが、根本的には解決されていません。そこで、ディレクトリの作成が終わったかどうか、もしくは、正常終了したのかどうかを何らかの戻り値で確認する方法はありますでしょうか。os.makedirsに限らず、スクリプトの処理とは別にOS側作業に時間がかかるような処理について戻り値を受け取ってから後続処理に進むような判定はできますでしょうか。ディレクトリ生成はローカルとFTP先と両方で行っています。お分かりでしたら、ftplib.FTPで接続している場合のFTP接続先(いずれもWindowsPC同士)である場合に、ディレクトリ生成終了ステータスなどを拾える手段があるかについても教えて頂けないでしょうか。【追記】コメントを頂きありがとうございます。ソースコードは以下のとおりです。2:39user28076user28076現象を再現するコードの提示は可能でしょうか。4:03os.makedirsが返った時ディレクトリが作成できていないというのが不思議です。makedirsは内部でmakedirs自身を呼んでいます。4:16コメントを頂きありがとうございます。コメント欄ですと改行ができないらしいので本文に追記いたしました。煩雑な処理は書いていないのでどうしたものかと悩んでおります。票2os.makedirsが返った時ディレクトリがキャッシュにしかできていない可能性があります。このケースでは、直前に削除を行っていますが、大量のデータの削除をしていませんか。その場合、キャッシュの処理は終わり戻り値が帰ってきているが、ディスク本体の処理が終わっていないという状態になります。書き込みをしようするディレクトリー名が削除しているディレクトリー名が同じなので、削除処理が完了しないと処理が競合してしまのでエラーが発生することは十分考えられます。削除でなくて、ディレクトリー名の変更にしておいて、後で削除したらどうでしょうか。renameの処理は高速です。個の銅バッジご回答くださいましてありがとうございます。ご指摘のとおりでした。確かにディレクトリ名が同一で、ファイルごと一括削除のためその処理に時間がかかりタイムラグが生じているようです。原因が分かり気持ちがすっきりしました。削除と生成の仕様を変更することにいたします。本当にありがとうございました。内でキャッシュの処理が終わったなら、それで削除は完了です。ディスク上にいつ反映されるかはアプリケーションの関知することではありません。削除が終わったはずなのに、その後に作ったディレクトリがディスクの反映に巻き込まれて消えてしまうなど、あるはずがありません。質問者さんの場合は解決したようですが、別の理由でたまたま回避できた、と考えるべきだと思います。13:38これと同じ経験したことあります。15:32os.path.isdirの処理をキャッシュだけで処理せずディスク側とやり取りするとこのような結果になっておかしいことではありません。どこまでキャッシュだけでするかは設定にもよります。16:01「キャッシュだけで処理せずディスク側とやり取りするとこのような結果になっておかしいことではありません」なので、ディスク側と直接やりとりするはずがないという認識です。さんが同じ症状に遭遇し、同じ方法で解決したとのことなので、私も試してみたいと思います。件のコメントを表示0Windowsの環境が手元になくLinuxで試してみましたが、下記の通りディレクトリが作成されるタイムラグは出ませんでした。このコードを該当の環境で試して結果をお知らせ下さい。pythonのバージョンは下記の通りです。個の銅バッジご回答頂きありがとうございます。ご指摘のとおり正しく表示されました。実行環境はテスト環境のためEclipseのデバッグモードです。今回は確かに再現しませんでしたが、昨日は現象を連発していたので「そのような現象は起こりえない仕様」ということですと納得いかない感じもいたします。6:30確認ありがとうございました。再現した時に、もう一度、同じプログラムを実行すると何かわかるかもしれませんね。6:39ありがとうございます。今しがた再現していたのですが、原因が判明いたしました。Niji様のご指摘どおりディレクトリをファイル毎一括削除直後に同一名称で生成していることに起因しているようです。仕様変更で対応いたします。ご回答くださいまして誠にありがとうとざいました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。