Рейтинг:0

Как «правильно» заставить этот скрипт Python для реорганизации файлов запрашивать ввод данных пользователем, проверять правильность, а затем дважды проверять?

флаг vn

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

Я настроил его так, чтобы он запрашивал пользовательский ввод вместо жесткого кодирования переменных в сценарии (показано ниже между МОИ ТЕКУЩИЕ ПРАВКИ комментарии), и это, кажется, работает достаточно хорошо, но я беспокоюсь, что это может в конечном итоге случайно съесть весь каталог, с которым я не собираюсь работать, если я допущу ошибку.

Вопросы:

  1. Есть ли способ, с помощью которого я могу заставить его запрашивать у пользователя reorg_dir таким образом, он позволяет пользователю прокручивать каталоги, выбирать каталог, а затем дважды проверять, чтобы убедиться, что пользователь доволен тем, что произойдет?

  2. В том же духе, есть ли средство, с помощью которого можно было бы предложить исключить какой-либо тип файла, иначе он ничего не исключает?

  3. Продолжаем, как насчет remove_emptyfolders, иначе предположим Истинный ?

(Вопрос 1 — самый важный. Я не ожидаю, что вы решите всю проблему для остальных, если не будете честолюбивы!)

#!/usr/bin/env python3

импорт ОС
подпроцесс импорта
импортный шутил

# --------------------------------------------- -------
reorg_dir = "/path/to/directory_to_reorganize"
exclude = ("".jpg") # например
remove_emptyfolders = Истина
# --------------------------------------------- --------

# МОИ ТЕКУЩИЕ ПРАВКИ ---------------------------------------
пока верно:
    dirReorg= input("Какой каталог вы хотите организовать по типу файла?")
    если не os.path.exists(dirReorg):
        print("Такого пути не существует. Попробуйте еще раз!")
        Продолжить
    сломать
reorg_dir = os.path.abspath(dirReorg)
# конец МОИХ ТЕКУЩИХ ПРАВОК ---------------------------------------------

для корня, каталогов, файлов в os.walk(reorg_dir):
    для имени в файлах:
        тема = корень+"/"+имя
        если name.startswith("."):
            расширение = ".hidden_files"
        Элиф не "." по названию:
            расширение = ".без_расширения"
        еще:
            расширение = имя[имя.rfind("."):]
        если не расширение в исключении:
            new_dir = reorg_dir+"/"+расширение[1:]
            если не os.path.exists(new_dir):
                os.mkdir(новый_каталог)
            Shutil.move(тема, new_dir+"/"+имя)

защита очистки():
    список файлов = []
    для корня, каталогов, файлов в os.walk(reorg_dir):
        для имени в файлах:
            filelist.append(root+"/"+имя)
    directorys = [item[0] для элемента в os.walk(reorg_dir)]
    для др в каталогах:
        соответствует = [элемент для элемента в списке файлов, если др в элементе]
        если len(совпадает) == 0:
            пытаться:
                шутил.rmtree (д-р)
            кроме FileNotFoundError:
                проходят

если remove_emptyfolders == True:
    очистка()

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.