Найдите каталог в списке каталогов, содержащих часть строки, используя python - PullRequest
1 голос
/ 22 апреля 2020

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

Если у меня есть каталог с кучей подкаталогов, и я хочу чтобы найти каталог c, имя которого содержит часть текста, который я ищу, я хочу переместить этот каталог в другой каталог.

Так, например, у меня есть следующие каталоги

  • c: / users / bob / folder / folder123
  • c: / users / bob / folder / folder456
  • c: / users / bob / folder / folder789
  • c: / users / bob / folder / folder0

Я спрашиваю пользователя «Какую строку вы ищете?». Давайте представим, что пользователь говорит мне, что он ищет строку «123». Я хочу иметь возможность найти папку, содержащую этот текст, а затем переместить эту папку и все ее содержимое в новый каталог.

Получение ввода от пользователя, очевидно, довольно просто

print('What is the rev number?') #ask the user for the rev number
revNumber = input()

Теперь мне нужно передать эту переменную в некоторый код, который ищет в указанном каталоге c папки с этим текстом. Как только папка найдена, как мне ее переместить? Я знаю, как перемещать отдельные файлы, используя shutil.move, и мне было интересно, можно ли его также использовать для перемещения всей папки и всего ее содержимого.

Заранее большое спасибо.

1 Ответ

0 голосов
/ 23 апреля 2020

Вы можете использовать пакет os для создания каталогов и последующего копирования содержимого с помощью shutil. Обратите внимание, что с os у вас есть функции для обхода всей иерархии каталогов с помощью "walk ()". Посмотрите документацию.

Shutil также может перемещать каталоги.

Затем, чтобы найти определенную строку в другой строке, вы можете использовать ключевые слова "in", которые возвращают true, если строка была найдена:

# Example path
path = path/to/folder/file6854.jpg

# String to look for
to_find = "854"

if to_find in path:
  # Do something
...