从命令行和其他脚本中使用argparse参数

时间:2018-07-26 16:30:36

标签: python-2.7 argparse

#projectname    
from projectname.source import foo
# Import about 10 more functions

def main():
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers()

    parser_foo = subparsers.add_parser('foo', help="Help")
    parser_foo.add_argument("--bar", nargs="+", help='bar help')
    parser_foo.set_defaults(func=foo)

    # More subparsers for the other funtions

    args = parser.parse_args()
    args.func(args)

if __name__ == "__main__":
    main()

#foo.py
def foo(args):
    print args

用法:项目名称foo [--bar]

两个问题:

  1. 我知道应该从__main__.py文件运行命令行脚本,但是,由于我使用的类似git的样式要求我在开头写文件名,所以我不知道如何从projectname运行脚本时访问__main__.py。如何在命令行中将第一个参数设为projectname
  2. 我需要我的脚本直接从命令行运行,并且我还需要从另一个脚本内部调用这些函数。在这种情况下,我可以不使用projectname

我可以针对每个功能执行此操作

#foo.py
def foo(args):
    print args

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers()
    parser_foo = subparsers.add_parser('foo', help="Help")
    parser_add.add_argument("--bar", nargs="+", help='bar help')
    parser_foo.set_defaults(func=foo)
    args = parser.parse_args()
    args.func(args)

但这意味着为每个功能重复每个部分。我很困在这里!

0 个答案:

没有答案