Как преобразовать список в шаблон стиля glob в python - PullRequest
0 голосов
/ 30 августа 2018

Мне нужно скопировать файлы, используя shutil copytree с определенным шаблоном. Шаблоны, которые у меня есть в виде списка. Я преобразовал список в строку, используя метод ниже, чтобы передать дерево копий ignore_pattern, как показано ниже.

def convert_list_to_str(pattern):
    patter = ','.join("'{0}'".format(x) for x in pattern)
    return patter

copytree(sourcedir, target_dir,ignore=ignore_patterns(pattr))

Если я жестко закодирую шаблон, как показано ниже

copytree(sourcedir, target_dir,ignore=ignore_patterns('*.bat','*.jar')) 

Работает нормально, здесь я не могу повторить шаблон, потому что при первом запуске он создаст папку. Поэтому мне нужно преобразовать список в шаблон glob, чтобы его можно было передать в качестве параметра. Но не знаю, как преобразовать список в шаблон глобуса.

Как этого добиться?

EDIT:

aa = ['*.bat','*.txt']
print(convert_list_to_str(aa))

Результат:

'*.bat','*.txt'

1 Ответ

0 голосов
/ 30 августа 2018

Вам не нужна функция list_to_str. Когда в документах написано ignore_patterns(*patterns), это означает, что функция принимает ноль или более аргументов. Поэтому вам нужно назвать это так:

copytree(sourcedir, target_dir,ignore=ignore_patterns(*pattern))

обратите внимание на шаблон * before, он преобразует ваш список в серию аргументов.

Подробнее об операторах распаковки в python вы можете прочитать здесь: https://codeyarns.com/2012/04/26/unpack-operator-in-python/

...