简单易用的库,用于执行shell命令,将数据保存到文件系统,而无需重新执行已执行的任务。

e的Python项目详细描述


在Python脚本中执行简单的任务

CircleCIPyPI

用于执行分步批处理任务的超级简单库(实现为 shell命令,或python函数)将内容保存到文件中,例如 已完成任务的输出不需要重新计算。见 below例如。在

Ey没有调度程序或中央工作池或类似的东西。取而代之的是 您只需以程序方式手动执行任务。这样任务执行 可以很容易地与其他过程性python代码混合使用。在

Ey可以作为成熟的工作流框架(如Luigi或 当您只有一个python脚本时,如果您希望 在开始交互式分析之前,执行一些批处理步骤,例如 下载数据集,解包,预处理等等。在

Ey很小(不超过100行代码),并且没有外部 依赖关系,这意味着您甚至可以将实现复制到自己的实现中 代码回购,如果你想确保最大限度的未来再现性。在

先决条件

  • 到目前为止,Ey只在类unix的环境中进行了测试。在

安装

使用pip从Python包索引安装:

pip install ey

使用

Ey通过指定shell命令或python函数来 分别作为ey.shell()或{}的第一个参数执行。在

在shell命令中,需要将输入和输出文件路径替换为 [i:inputname]和{}形式的占位符 分别。您还需要提供dict来指定 输入和输出(视情况而定)提供给可选的 inputs和{}参数。见 下面的例子是一个具体的例子。在

输入应该始终通过input-参数提供,而输出路径 最容易在命令的相应占位符中提供内联。 请注意,您可以重用输入占位符值来生成输出路径。 因此,例如,如果您想将输出命名为与输入相同的名称,但是 使用一个额外的.txt扩展名,您可以在命令中这样指定它: somecommand > [o:myoutput:[i:myinput].txt]。在

如果输入中有要删除的现有扩展,则可以 在输入占位符中添加|%.actual-extension-here。所以,如果你 有一个输入myinput,路径为myfile.txt.gz,您可以只重用 myfile.txt部分通过写[i:myinput|%.gz]来删除{}部分。 将其放在输出占位符中,例如可以do:zcat [i:archivefile] > [o:unpacked:[i:archivefile|%.gz]],以便命名 解包文件与存档文件相同,但没有扩展名.gz。在

请参阅下面的示例,了解如何在实践中使用此方法!在

示例

下面是一个下载gzip文本文件的小示例(在所谓的 FASTA格式),ungzip,然后计算A:s,T:s,G:s和 C: 并计算G和C:s相对于所有A,T,G,C:s的分数 (DNA的所谓GC分数测量)。在

前两个任务是通过执行shell命令来完成的,第二个任务是通过执行shell命令来完成的 使用python函数。在

^{pr2}$

将此代码添加到名为gcfrac.py的文件中,并使用以下命令运行它:

python gcfrac.py

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

推荐PyPI第三方库


热门话题
java两个构造函数?   java for(inti:x)做什么?   java如何将一个bean的构造函数参数传递给嵌套bean   java从易趣链接提取项目ID   java多线程BufferedReader   安卓全新应用程序在R.java中抛出“语法错误,插入“}”以完成类体”   java Spring启动依赖注入请求范围的bean   java给定的时间,然后约定和异常处理。和莫基托和朱尼特在一起   与Android Studio的java Oracle数据库连接   在web服务器(Heroku)上承载可运行jar文件(Discord bot)的java   java如何每隔n秒在imageview中更改图像   java不理解“volatile”关键字   java使用JPA编写自定义SQL查询   java如何使用filechannel作为参数来编写对象