当前位置:  开发笔记 > 编程语言 > 正文

如何在Python Luigi中使用参数

如何解决《如何在PythonLuigi中使用参数》经验,为你挑选了1个好方法。

如何将参数传递给Luigi?如果我有一个名为FileFinder.py的python文件,其中包含一个名为getFIles的类:

class getFiles(luigi.Task):

我想将目录传递给这个类,例如:

C://Documents//fileName

然后在我的run方法中使用此参数

def run(self):

如何在命令行中运行它并添加参数以便在我的代码中使用?我习惯于在命令行中运行这个文件,如下所示:

python FileFinder.py getFiles --local-scheduler

我将什么添加到我的代码中以使用参数,以及如何将该参数添加到命令行参数?

另外,作为这个问题的扩展,我将如何使用多个参数?或不同数据类型的参数,如字符串或列表?



1> Toterich..:

正如您已经想到的那样,您可以将参数传递给luigi via

--param-name param-value

在命令行中.在代码中,您必须通过实例化Parameter类或其中一个子类来声明这些变量.子类用于告诉luigi变量是否具有非字符串的数据类型.下面是一个使用两个命令行参数的示例,一个Int和一个List:

import luigi

class testClass(luigi.Task):
  int_var = luigi.IntParameter()
  list_var = luigi.ListParameter()

  def run(self):
      print('Integer Param + 1 = %i' % (self.int_var + 1))

      list_var = list(self.list_var)
      list_var.append('new_elem')
      print('List Param with added element: ' + str(list_var))

请注意,ListParams实际上已被luigi转换为元组,因此如果要对它们执行列表操作,则必须先将它们转换回来(这是一个已知问题,但看起来不会很快修复).

您可以从命令行调用上面的模块(我已将代码保存为名为"testmodule.py"的文件,并从同一目录中调用):

luigi --module testmodule testClass --int-var 3 --list-var '[1,2,3]'  --local-scheduler

请注意,对于包含a的变量_,必须将其替换为-.通话产生(以及许多状态消息):

Integer Param + 1 = 4
List Param with added element: [1, 2, 3, 'new_elem']

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有