我当时想弄清楚Python,PowerShell,并考虑了Ansible,然后才想到必须有一种更简单的方法。我什至有点想从Excel中尝试VBA,因为这是文件列表(由其他人维护)的地方。
提供根文件名和目的地列表:
roots = ['foo', 'bar', 'fooobar', 'barfoo123']
dests = [['cfg', '/config', 'yes']
['jpg', '/picture', 'yes']
['avi', '/video', 'no']]
我如何迭代这些操作,以将文件从杂乱无章的文件树(例如“ ../pileoffiles”)复制到特定的目标位置?每个文件都是必需的(是/否)。
仅使用上方的'foo',我们会寻找
'foo.cfg','foo.jpg','foo.avi'
[<.. pileoffiles>/config/foo.cfg
/picture/foo.jpg
/video/foo.avi
如果缺少.cfg或.jpg,则会引发错误/消息。然后重复其余的根。
我认为Ansible产品过滤器看起来很有希望:
- name: generate multiple hostnames
debug:
msg: "{{ ['foo', 'bar'] | product(['com']) | map('join', '.') | join(',') }}"
生成:
{ "msg": "foo.com,bar.com" }
这真是个难题。我可以用脚本或代码蛮力解决该问题,但是似乎必须有一种更好的方法将文件列表替换为模板并进行迭代。另外:我使用Unix文件夹约定'/',但目标系统是Windows。
因此,您将推荐什么作为解决此类问题的最佳工具?
我当时想弄清楚Python,PowerShell,并考虑了Ansible,然后才想到必须有一种更简单的方法。我什至有点想从Excel尝试VBA,因为那是...os
和/或pathlib
可以很容易地完成此任务。内置模块pathlib
允许您在创建Path
对象时使用unix'/'约定。例如