0

我需要使用具有特定模式的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 模式,以便它可以作为参数传递。但不知道如何将列表转换为 glob 模式。

如何做到这一点?

编辑:

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

结果:

'*.bat','*.txt'
4

1 回答 1

1

你不需要你的 list_to_str 函数。当它ignore_patterns(*patterns)在文档中说时,这意味着该函数需要零个或多个参数。所以你需要这样称呼它:

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

注意*之前的模式,它将您的列表转换为一系列参数。

您可以在此处阅读有关 python 中的解包运算符的更多信息:https ://codeyarns.com/2012/04/26/unpack-operator-in-python/

于 2018-08-30T07:29:59.487 回答