gpt4 book ai didi

python-2.7 - 传递 argparse 列表时导入 python 模块

转载 作者:行者123 更新时间:2023-12-05 05:20:10 26 4
gpt4 key购买 nike

我有一个名为 mymodule.py 的脚本,它使用了 argparse。我希望能够编写一个脚本 fakemicro.py,它将能够从 mymodule.py 导入主模块并将参数传递给它。我的代码基于 Brian 在这里的回答:https://www.reddit.com/r/learnpython/comments/3do2wr/where_to_put_argparse/以及此处接受的答案:In Python, can I call the main() of an imported module?

我不断收到意想不到的错误,所以希望您能提供帮助。

mymodule.py 的内容如下:

#!/usr/bin/env python
import argparse
import sys
def parse_args(args):
parser = argparse.ArgumentParser(
description='yeah'
)
parser.add_argument(
'-i', nargs='+',
help='full path of input directory', required=True
)
parser.add_argument(
'-o', '-output',
help='full path of output directory', required=True
)
parsed_args = parser.parse_args()
return parsed_args


def main(args):
args = parse_args(args)
print args.i
print args.o
if __name__ == '__main__':
main(sys.argv[1:])

这里是fakemicro.py:

#!/usr/bin/env python

import mymodule
import sys
mymodule.main(['-i', sys.argv[1], '-o', sys.argv[2]])

我原以为这会像我输入的那样起作用:mymodule.py -i path/to/1 -o path/to/2 在命令行中但是我的脚本却坏了。

$ fakemicro.py path/to/2 path/to/3
usage: fakemicro.py [-h] -i I [I ...] -o O
fakemicro.py: error: argument -i is required

我以为 mymodule.py 会看到我通过了 -i arg1 -o arg2mymodule.main(['-i', sys.argv[1], '-o', sys.argv[2]])

这是 mymodule.py 在命令行上单独运行时的输出:

$ mymodule.py -i 1 -o 2
['1']
2

任何帮助将不胜感激。谢谢!

最佳答案

我想通了。我没有将 args 参数传递给 parsed_args = parser.parse_args() 。因此,解析器对象使用 sys.argv[1:] 作为其来源,而不是任何作为参数传递的内容。将该行更改为 parsed_args = parser.parse_args(args) 解决了这个问题。

关于python-2.7 - 传递 argparse 列表时导入 python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44849236/

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