从列表中将参数传递给python plumbum命令

时间:2017-08-14 16:44:28

标签: python plumbum

我使用Plumbum在Python的前台运行命令行实用程序。如果您有一个命令foo x y z,您可以像这样从Plumbum运行它:

from plumbum import cmd, FG
cmd.foo['x', 'y', 'z'] & FG

然而,在编写的代码中,参数['x', 'y', 'z']被生成到列表中。我无法弄清楚如何解压缩此列表以将其作为参数发送到plumbum。有什么建议吗?

4 个答案:

答案 0 :(得分:4)

原来我可以使用__getitem__。 我所要做的就是:

from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo.__getitem__(params) & FG

答案 1 :(得分:0)

感谢Alon Mysore的回答,碰巧是我需要的。

我尝试了以下,(没有工作):

from plumbum import local
from plumbum.commands import ProcessExecutionErr

files = ['gs://some-repo/somefile.txt', 'gs://some-repo/somefile2.txt']
files_string = ' '.join(files)

gsutil = local['gsutil']
command = gsutil['-m', 'rm', files_string]
try:
    job = command.run()
except ProcessExecutionError as err:
    print('Error: {}'.format(err))
    sys.exit(1)

但是在你回答之后,这是另一个使用gsutil(DID Work)进行人参考的例子:

from plumbum import local
from plumbum.commands import ProcessExecutionError

files = ['gs://some-repo/somefile.txt', 'gs://some-repo/somefile2.txt']

gsutil = local['gsutil']
command = gsutil['-m', 'rm']
try:
    job = command.__getitem__(files).run()
except ProcessExecutionError as err:
    print('Error: {}'.format(err))
    sys.exit(1)

问题是,当我自己将列表串入字符串时,plumbum似乎并不好看。

答案 2 :(得分:0)

这似乎可行:

from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo(*params) & FG

答案 3 :(得分:0)

__getitem__而不是使用bound_command,而是更具可读性的解决方案:

from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo.bound_command(params) & FG