У меня есть программа python, которая динамически перемещает и переименовывает файлы в кластер hadoop. Обычно файлы варьируются от 10 МБ (разбор) до 1,5 гб (необработанные данные). Для того, чтобы команды перемещения закончили, это может занять некоторое время и из того, что я могу сказать о гонках python через них, и ни одна из команд перемещения не завершится. Каков правильный способ ожидания python для предыдущих команд. Я храню команды в переменной и передаю ее в os.system. Соответствующий код:Сделать Python ждать завершения команд
os.system(moverawfile)
os.system(renamerawfile)
os.system(moveparsedfile)
os.system(renameparsedfile)
Я знаю, что команды переименования выполняются в основном мгновенно. Я не должен использовать os.system? Как я могу гарантировать, что python будет ждать завершения каждой команды, прежде чем перейти к следующему.
Каков ваш точный код? 'os.system' не возвращается, пока команда не выйдет из выходов. – chepner
Вы должны использовать ['subprocess'] (https://docs.python.org/2/library/subprocess.html) в любом случае. Например, вы можете создать исключение, например, для командной ошибки. – Kupiakos
os.system просто вызывает ['system (3)'] (http://linux.die.net/man/3/system) и ждет завершения команды. – Kevin