[英]Pass parameters to python plumbum command from a list
我正在使用Plumbum在 Python 的前台運行命令行實用程序。 如果你有一個命令foo xyz
,你可以像這樣從 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)
問題是當我自己將列表連接成一個字符串時,鉛彈似乎不太好。
這似乎有效:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.