数据手册。打开、处理和保存基于表的数据。

dataplaybook的Python项目详细描述


数据手册

:book:playbooks用于数据。打开、处理和保存基于表的数据。 circlecicodecov

自动化基于表的数据的重复任务。包括各种输入输出任务。可通过自定义模块扩展。

安装:pip install dataplaybook

使用:dataplaybook playbook.yaml

剧本结构

playbook.yaml文件允许您加载其他模块(包含任务),并指定要按顺序执行的任务及其所有参数。

要执行的任务通常遵循读、处理、写的结构。

示例yaml:(请注意yaml区分大小写)

modules:[list,of,modules]tasks:-task_name:# See a list of tasks belowtask_setting_1:1tables:# The INPUT. One of more tables used by this tasktarget:# The OUTPUT. Target table name of this functiondebug:True/False# Print extra debug message, default: False

模板化

jinja2和jmespath表达式可用于为后续任务创建参数。jinja2简单地使用"{{var[res1]}"括号语法,jmespath表达式应该以单词jmespath开头,后跟空格。

varstemplate任务都会得到类似的结果:(这将在键列上搜索与字符串"2"匹配的表,并返回值列中的值)

-vars:res1:jmespath test[?key=='2'].value | [0]# is equal to-template:jmespath:"test[?key=='2'].value|[0]"target:res1# ... then use it with `{{ var.res1 }}`

jmespath任务模板任务的优点是可以创建新变量或表

如果您有定期使用的查找,可以执行以下操作:

-build_lookup_var:key:keycolumns:[value]target:lookup1# and then use it as follows to get a similar results to the previous example-vars:res1:"{{var['lookup1']['2'].value}}"

在使用jinja搜索表时,使用selectattr的类似一行代码似乎要复杂得多:

-vars:res1:"{{test|selectattr('key','equalto','2')|map(attribute='value')|first}}"

任务

任务被实现为简单的python函数,这些模块可以在dataplaybook/tasks文件夹中找到。

默认任务dataplaybook.tasks(默认加载)

  • 生成查找
  • 生成查找变量
  • 联合收割机
  • 下降
  • 延长
  • 过滤器
  • 模糊匹配(pip install fuzzywuzzy
  • 打印
  • 更换
  • 独特
  • vlookup

模板(默认加载)

  • 模板-可用于
  • vars-使用

其他模块

如果需要,可以加载这些模块

  • ietfdataplaybook.tasks.ietf-ietf/rfc/draft相关任务
  • gisdataplaybook.tasks.gis-qgis数据的任务
  • fnbdataplaybook.tasks.fnb

IO任务

excel文件dataplaybook.tasks.io_xlsx(默认加载)

  • 阅读excel
  • 编写excel

杂项I/Odataplaybook.tasks.i o_misc(默认加载)

  • 阅读csv
  • 阅读标签
  • 阅读"文本"regex
  • wget
  • 写入csv

mongo dbdataplaybook.tasks.io\u mongo

需要pymongo

  • 阅读"mongo"
  • 写"mongo"
  • 列到列表
  • 列出"u到u"列

模块io_pdf

在您的路径上需要pdftotext可执行文件

  • 阅读PDF页面
  • 阅读PDF文件

模块io_xml

  • 读取XML

特殊的yaml函数

    < L> >代码>!re<;expression>;正则表达式< L> >代码>!es<;搜索字符串>;使用voidtools中的所有内容搜索文件

安装开发版本

  1. 复制回购协议
  2. pip安装<;路径>;-e

数据剧本来源

创建数据剧本是为了替换我周围的各种代码片段。它们都是为了确保某些低级任务的可重复性而创建的,并且通常遵循类似的结构来加载、处理和保存某些内容。(将网络数据处理为地理信息系统工具、网络审计和路由器和网管输出报告、提取ietf标准以完成soc、将我的银行对账单读入excel预算工具等)

对于其中许多任务,我都有特定的处理代码(tasks_x.py,在剧本中加载了模块:[tasks_x]),但在几乎所有情况下,输入和输出任务(以及配置这些名称等)都是常见的。模块化任务的想法最初来自家庭助理,在那里我开始学习python和"自定义组件"的想法来添加您自己的集成,尽管有人可能会说这与ansible playbooks也有相似之处。

在许多情况下,我有一个'松散'耦合到实际的文件名,使用一切搜索(!es search_pattern在行动手册中)将搜索模式解析为用于输入的正确文件。

它和Ansible Playbooks有一些共同之处,特别是在我被介绍到Ansible Playbooks之后,这个名字就被选中了。任务结构已于2019年更新,以匹配Ansible Playbooks 2.0/2.5+格式和允许名称。这种格式也更容易引入循环机制等。

与Ansible Playbooks的比较

数据行动手册旨在创建和修改环境中的变量(类似于库存)。数据剧本以一个空的环境开始(尽管您可以从剧本中的不同来源读取环境)。 尽管可以在ansible中使用register:创建新变量,但数据playbook函数要求通过target:捕获输出。

数据行动手册任务不同于Ansible的行动

  • 它们大多不是等幂的,因为其目的是在我们进行时修改表,
  • 它们可以返回包含行的列表,也可以是python迭代器(即表的yieldrows)
  • 如果它们不返回任何表格数据(列表),则返回值将添加到环境中的var表中
  • 每个都有一个严格的volupturous模式,在加载时和运行时进行评估(例如展开模板),以便快速排除故障

你可以说我可以用ansible来实现,但是对于单项目主机文件,在整个剧本中,收集事实:不委托给:localhost就没有那么优雅了。强迫自己去思考可能只会有一半的乐趣。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
序列化反序列化java。awt。颜色>java。木卫一。InvalidClassException   java禁用多个日期范围jDateChooser   java为什么我的特例apper会被扔进泽西/灰熊?   JavaIntelliJ比较两个覆盖率数据   java什么是servletsdefault。你怎么办?   单击几下libgdx后java按钮没有响应   使用java将字符串转换为JSONArray   文件系统在java中刷新fileSystemViewer   java如何在hibernate中避免脏检查   java奇怪的问题,带有分号和“无法解决…”   java将值从子面板传递到父面板   HTML JTextPane CSS的Java FontSizeAction   java文件代码神秘地变成了一堆(0000)