os.makedirs が実際にディレクトリを作成するまで時間がかかる
海外サイトも含め検索しましたが、有効な解決策を見つけることができませんでした。
お知恵をお貸し頂けないでしょうか。
OS:Windows
os.makedirs()を使いディレクトリを作成した際、実際にディレクトリが作成されるまでに”少々”の時間がかかります。
後続処理では当然ながらos.path.isdir()を使ってディレクトリが生成済みであるかどうかを確認したうえでファイル転送を行うようにしていますが、
PCスペックによりますが約50%の確率でディレクトリ生成より前に処理が進んでしまいチェックの網にかかってしまいます。
暫定処置としてos.makedirsの直後にtime.sleep(2)を埋め込んで時間をおいてから後続処理に進むようにしたところ表面的には解決しましたが、根本的には解決されていません。
そこで、ディレクトリの作成が終わったかどうか、もしくは、正常終了したのかどうかを何らかの戻り値で確認する方法はありますでしょうか。
また、os.makedirsに限らず、スクリプトの処理とは別にOS側作業に時間がかかるような処理について戻り値を受け取ってから後続処理に進むような判定はできますでしょうか。
ディレクトリ生成はローカルとFTP先と両方で行っています。もしお分かりでしたら、ftplib.FTPで接続している場合のFTP接続先(いずれもWindowsPC同士)である場合に、ディレクトリ生成終了ステータスなどを拾える手段があるかについても教えて頂けないでしょうか。
【追記】
コメントを頂きありがとうございます。ソースコードは以下のとおりです。
try:
if os.path.isdir(self.aaa):
shutil.rmtree(self.aaa)
os.makedirs(self.aaa)
time.sleep(2)
except Exception as e:
print e
try:
if os.path.isdir(self.aaa):
# ファイルコピー処理
else:
logger.info(u"まだ生成できていないです")
except Exception as e:
print e