从列表中将参数传递给 python plumbum 命令
Pass parameters to python plumbum command from a list
我在 Python 的前台使用 Plumbum 到 运行 命令行实用程序。如果你有一个命令 foo x y z
,你会像这样从 Plumbum 运行 它:
from plumbum import cmd, FG
cmd.foo['x', 'y', 'z'] & FG
然而,在我正在编写的代码中,参数 ['x', 'y', 'z']
生成到一个列表中。我不知道如何解压这个列表以将其作为参数发送给 plumbum。有什么建议吗?
原来我可以用 __getitem__
来做这个。
我所要做的就是:
from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo.__getitem__(params) & FG
感谢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 似乎不太好用。
这似乎有效:
from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo(*params) & FG
而不是使用 __getitem__
,一个更具可读性(和等效)的解决方案是 bound_command
:
from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo.bound_command(params) & FG
我在 Python 的前台使用 Plumbum 到 运行 命令行实用程序。如果你有一个命令 foo x y z
,你会像这样从 Plumbum 运行 它:
from plumbum import cmd, FG
cmd.foo['x', 'y', 'z'] & FG
然而,在我正在编写的代码中,参数 ['x', 'y', 'z']
生成到一个列表中。我不知道如何解压这个列表以将其作为参数发送给 plumbum。有什么建议吗?
原来我可以用 __getitem__
来做这个。
我所要做的就是:
from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo.__getitem__(params) & FG
感谢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 似乎不太好用。
这似乎有效:
from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo(*params) & FG
而不是使用 __getitem__
,一个更具可读性(和等效)的解决方案是 bound_command
:
from plumbum import cmd, FG
params = ['x', 'y', 'z']
cmd.foo.bound_command(params) & FG