需要工具或模板以简单的规则复制列表中的文件

问题描述 投票:1回答:1

我当时想弄清楚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,因为那是...
python ansible jinja2 itertools shutil
1个回答
0
投票
堆栈溢出通常不是寻求建议的地方,但是使用python库os和/或pathlib可以很容易地完成此任务。内置模块pathlib允许您在创建Path对象时使用unix'/'约定。例如
© www.soinside.com 2019 - 2024. All rights reserved.