簡體   English   中英

從列表中將參數傳遞給 python plumbum 命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM