【发布时间】:2019-01-02 18:04:00
【问题描述】:
真的不知道该怎么表达这个, 但是我正在将 bash 脚本转换为 python,并且我试图调用通常通过 CLI 调用的 python 库中的方法。该方法使用 argparse 并在调用时需要 2 个参数。
我不确定如何调用此方法并在从单独的 python 脚本调用它时提供两个参数。
我尝试过的:
>> from somelibrary import mymethod as method
>> method.main('foo', 'bar')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: main() takes 0 positional arguments
but 2 were given
>>> method.main()
usage: [-h] foo bar
: error: the following arguments are required:
foo, bar
非常感谢任何帮助!
【问题讨论】:
-
看看
mymethod的样子会很有帮助 -
您是否有理由不通过
subprocess模块将模块作为 CLI 命令运行?大概main没有返回任何用处,所以subprocess.run([sys.executable, '-m', 'somelibrary', 'foo', 'bar'])似乎是直接的解决方案...... -
您要调用的对象是什么?你控制它吗?你能改变它来接受论点吗?您确定在将此代码用作库时没有更合适的入口点吗?
-
@user2357112 我实际上是在调用一个接受两个参数的方法:一个 sqlite 文件和一个 tsv 文件。它将使用 tsv 文件的内容填充 sqlite 数据库。我不控制它。我也不相信我能改变它。
-
@user2357112 更新!我和它的主人谈过了,我可以把它改成接受 args。我会这样做
标签: python command-line-interface argparse