您可以使用 braceexpand 从字符串列表中展开吗?
Can you use braceexpand to expand from a list of strings?
我想使用os.makedirs创建一个目录结构。我尝试使用 braceexpand,它部分起作用了:
for x in list(braceexpand('/Users/admin/Desktop/{cat,dog,bird}/{thing1,thing2,thing3,thing4}')): os.makedirs(x,exist_ok=True)
但我不想手动创建名为 'cat'、'dog' 和 'bird' 的目录,而是希望通过从列表创建结构来自动化该过程。
animals = [ 'cat', 'dog', 'bird']
这是因为我有时只需要中间目录 'dog',有时需要 'dog' 和 'cat',有时需要全部三个。因此,能够根据列表包含的任何动物子集创建目录结构会很好。
到目前为止我还没有能够实现这个(使用列表进行支撑扩展)。
在此处答案 (Brace expansion in python glob) 的帮助下,我能够使用嵌套的 for 循环和下面的代码创建我想要的目录结构。
for x in ['/Users/admin/Desktop/{s}/{b}'.format(b=b,s=s) for b in ['thing1','thing2','thing3','thing4'] for s in ['cat', 'dog', 'bird']]: os.makedirs(x,exist_ok=True)
但是我喜欢 braceexpand 的可读性,所以我很好奇是否有人知道如何用它来做——或者它是否可以做到。
谢谢!
在将字符串传递给 braceexpand
之前,您应该能够使用 Python 字符串插值 "hack" 它:
names = ['dog', 'cat', 'bird']
print('/Users/admin/Desktop/{{{}}}/{{thing1,thing2,thing3,thing4}}'.format(','.join(names)))
产出
/Users/admin/Desktop/{dog,cat,bird}/{thing1,thing2,thing3,thing4}
当然也可以为thing1,thing2,...
做同样的事情
有关为什么需要 {{{}}}
和 {{ ... }}
的解释,请参阅此 answer。
我想使用os.makedirs创建一个目录结构。我尝试使用 braceexpand,它部分起作用了:
for x in list(braceexpand('/Users/admin/Desktop/{cat,dog,bird}/{thing1,thing2,thing3,thing4}')): os.makedirs(x,exist_ok=True)
但我不想手动创建名为 'cat'、'dog' 和 'bird' 的目录,而是希望通过从列表创建结构来自动化该过程。
animals = [ 'cat', 'dog', 'bird']
这是因为我有时只需要中间目录 'dog',有时需要 'dog' 和 'cat',有时需要全部三个。因此,能够根据列表包含的任何动物子集创建目录结构会很好。
到目前为止我还没有能够实现这个(使用列表进行支撑扩展)。
在此处答案 (Brace expansion in python glob) 的帮助下,我能够使用嵌套的 for 循环和下面的代码创建我想要的目录结构。
for x in ['/Users/admin/Desktop/{s}/{b}'.format(b=b,s=s) for b in ['thing1','thing2','thing3','thing4'] for s in ['cat', 'dog', 'bird']]: os.makedirs(x,exist_ok=True)
但是我喜欢 braceexpand 的可读性,所以我很好奇是否有人知道如何用它来做——或者它是否可以做到。
谢谢!
在将字符串传递给 braceexpand
之前,您应该能够使用 Python 字符串插值 "hack" 它:
names = ['dog', 'cat', 'bird']
print('/Users/admin/Desktop/{{{}}}/{{thing1,thing2,thing3,thing4}}'.format(','.join(names)))
产出
/Users/admin/Desktop/{dog,cat,bird}/{thing1,thing2,thing3,thing4}
当然也可以为thing1,thing2,...
有关为什么需要 {{{}}}
和 {{ ... }}
的解释,请参阅此 answer。