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

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第三方库


热门话题
JavaGWT:何时使用Lazydemelement?   Java中跟踪消失线程的多线程处理   java Springboot未能配置数据源:“url”,但我没有使用数据库   java为按钮生成随机位置   math Java:包含二项式系数计算的表达式   java通过AsyncTask传递参数   从路径错误创建java文件   高流量网站的性能播放框架、Java、Apache、PostgreSQL、JPA和Hibernate   java将4D矢量转换为长矢量   arraylist Java循环在没有任何错误的情况下终止   java正在制作一个计算器应用程序,希望在第二个片段中更新历史,但无法完成   java将信息从IntentService发送到Activity   java如何在游戏中插入大量实体!工作   javascript如何在ScriptEngineforJava中从数学中获得准确的结果?