У меня есть tkinter GUI, который в какой-то момент запрашивает у пользователя папку, проверяет, существует ли она, а затем, если она есть, и пользователь соглашается, удаляет и воссоздает ее. Я делаю это с помощью следующего кода:
try:
self.status_string.set('Cleaning up output directory to be overwritten')
shutil.rmtree(output_folder)
while os.path.exists(output_folder):
time.sleep(1)
os.makedirs(output_folder + '/events')
except OSError:
self.status_string.set('Failed to create directory {0}, verify that you have permission to do so'.format(output_folder + '/events'))
В настоящее время я звоню time.sleep
, чтобы заставить его ждать, пока каталог будет полностью удален, прежде чем пытаться воссоздать его, потому что содержимое может быть большой, и это может занять некоторое время, и я хочу избежать состояния гонки. Но мне кажется неправильным использовать sleep
во время mainloop
из tkinter
, и я не уверен, что проверка существования после вызова rmtree
действительна. Кажется, это работает в тестировании, но это может быть удачей. Как правильно дождаться разрешения системного вызова, прежде чем продолжить?