gpt4 book ai didi

python - 如何在 pyinvoke 中使用可变数量的参数

转载 作者:太空狗 更新时间:2023-10-30 00:06:09 26 4
gpt4 key购买 nike

我想在 pyinvoke 的任务中使用可变数量的参数。像这样:

from invoke import task

@task(help={'out_file:': 'Name of the output file.',
'in_files': 'List of the input files.'})
def pdf_combine(out_file, *in_files):
print( "out = %s" % out_file)
print( "in = %s" % list(in_files))

以上只是我尝试过的众多变体之一,但 pyinvoke 似乎无法处理可变数量的参数。这是真的吗?

以上代码结果

$ invoke pdf_combine -o binder.pdf -i test.pdf test1.pdf
No idea what '-i' is!

类似的,如果我定义pdf_combine(out_file, in_file),在in_file之前没有星号

$ invoke pdf_combine -o binder.pdf -i test.pdf test1.pdf
No idea what 'test1.pdf' is!

如果我只使用一个 in_file 调用任务,如下所示,它运行正常。

$ invoke pdf_combine -o binder.pdf -i test.pdf
out = binder.pdf
in = ['t', 'e', 's', 't', '.', 'p', 'd', 'f']

我想看到的是

$ invoke pdf_combine -o binder.pdf test.pdf test1.pdf test2.pdf
out = binder.pdf
in = [test.pdf test1.pdf test2.pdf]

我在 pyinvoke 的文档中找不到类似的东西,尽管我无法想象这个库的其他用户不需要调用具有可变数量参数的任务...

最佳答案

你可以这样做:

from invoke import task

@task
def pdf_combine(out_file, in_files):
print( "out = %s" % out_file)
print( "in = %s" % in_files)
in_file_list = in_files.split(',') # insert as many args as you want separated by comma

>> out = binder.pdf
>> in = test.pdf,test1.pdf,test2.pdf

调用命令的位置:

invoke pdf_combine -o binder.pdf -i test.pdf,test1.pdf,test2.pdf

我找不到另一种方法来阅读 pyinvoke文档。

关于python - 如何在 pyinvoke 中使用可变数量的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35771876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com