Подскажите по файлу / каталогу удалить

1

При кодировании в Python мне часто нужно написать такую ​​функцию, как эта:

def delete_dir(dir_name):

    if os.path.exists(dir_name):
        reply = raw_input("Delete directory "+dir_name+"? [y/[n]] ")
        if reply=='y':
            os.system('rm -r '+dir_name)
        else:
            print "Aborting..."
            sys.exit()

В основном это просто команда удаления с приглашением пользователя для двойной проверки (у меня также есть один для удаления файлов). Учитывая большое количество модулей Python, в том числе в стандартной библиотеке, мне интересно, существует ли что-то подобное уже здесь?

  • 1
    Вы, вероятно, должны сделать, если ответ в ['y', 'Y', 'yes']:
  • 0
    старайтесь не вызывать системные программы, когда это возможно. Это не портативный
Показать ещё 1 комментарий
Теги:
delete-directory
file-io
prompt

3 ответа

2

Это не будет Python, но если вы продолжаете использовать os.system() для вызова delete, вы можете передать параметр -i на rm. Страница руководства объясняет это:

-i   запрос перед каждым удалением

EDIT: я просто прочитал ваш код еще раз, и похоже, что вы запрашиваете только один раз перед всем процессом удаления, а не для каждого файла. Вместо этого вам может быть интересен флаг -i:

-I   запросить один раз перед удалением более трех файлов или когда удаление рекурсивно. Менее интрузивный чем -i, сохраняя при этом защиту               против большинства ошибок

1

чтобы удалить каталог, используйте os module os.rmdir(), os.removedirs(). Или shutil.rmtree(). Проверьте документы для получения дополнительной информации.

  • 0
    Я согласен, что они могут заменить строку os.system ('rm -r' + dir_name), но мне нужна процедура, которая автоматически выдаст приглашение пользователю дважды проверить необходимость удаления каталога.
0

ну, вы можете сохранить эту функцию в модуле и повторно использовать ее в других модулях, таким образом, ваша проблема будет решена!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню