我们有多个csv文件可以根据需求进行连接。每个csv文件都包含标题,我们无法更改它们,因为它来自源代码。我有很多片段要结合起来。
示例CSV1
hostname,ip,zone
host1,1.3.2.4,EU
host2,1.3.2.5,EU
示例CSV2
hostname,ip,zone
host32,8.3.2.4,US
host22,8.3.2.5,US
所需的最终输出
hostname,ip,zone
host1,1.3.2.4,EU
host2,1.3.2.5,EU
host32,8.3.2.4,US
host22,8.3.2.5,US
我尝试使用 Ansible playbook
- assemble:
src: /home/mycsvDirectory
dest: /home/newCSV/mycombined.csv
以上组合工作完美,但每次都包含标题。在根据预期输出组合所有片段后,我希望只有一个标题。如何有效地在ansible中做到这一点? (我可以想到一种循环文件的方法,但是我对100个文件的效率很低)
答案 0 :(得分:1)
assemble
模块实际上不是用于语义合并文件的正确工具(即,以依赖于文件内容的方式合并文件)。解决问题的最简单方法是停止将标头放在所有片段文件中。
如果删除标题行不是一个选项,使用Ansible的最简单的解决方案可能是编写一个自定义模块来处理它(使用csv
模块来解析所有片段,然后使用{{ 1}}或类似的生成输出。)
您可以使用几种hacky变通方法。例如,您运行后使用csv.writer
块在文件上运行command:
。