Я использую subprocess.check_output для удаления папок в has oop и хотел бы получить такие же результаты, как если бы я выполнял команду had oop с консоли.
Итак, может случиться так, что я попытаюсь удалить несколько каталогов, некоторые из которых не существуют.
Эта команда полностью завершается с ошибкой (потому что мой «несуществующий» каталог не может быть найден) предотвратить сбой, который я могу сделать:
try:
subprocess.check_output('hadoop fs -rm -r -skipTrash my_host/path_to_existing_directory/ my_host/path_to_nonexisting_directory', shell = True)
except subprocess.CalledProcessError as e:
print(e.output, 'some of the folders were not found')
Этот второй вариант лучше, поскольку он сообщает мне, какие из моих каталогов были удалены, если таковые имеются. И чтобы отличить guish от некоторых из них, я могу добавить в свою распечатку «некоторые папки не найдены».
Однако, когда я выполняю ту же команду из командной строки, я получаю более точную информацию, которую я хотел бы воспроизвести:
hadoop fs -rm -r -skipTrash my_host/path_to_existing_directory/ my_host/path_to_nonexisting_directory
Возвращает:
Deleted my_host/path_to_existing_directory
rm: `my_host/path_to_nonexisting_directory': no such file or directory