我有一个名为
我的代码基于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
的脚本,它使用 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
应该已经看到我通过mymodule.main(['-i', sys.argv[1], '-o', sys.argv[2]])
传递了-i arg1 -o arg2
参数?
当在命令行上单独运行mymodule.py
时,输出如下:
$ mymodule.py -i 1 -o 2
['1']
2
任何帮助都将不胜感激。谢谢!
mymodule
本身不会运行,对吧?你没有使用args
参数。 - hpaulj