我有一个使用此结构的现有脚本
def main():
import argparse
cmd_parser = argparse.ArgumentParser(description='A tool to work with MicroPython .mpy files.')
cmd_parser.add_argument('-d', '--dump', action='store_true',
help='dump contents of files')
cmd_parser.add_argument('-f', '--freeze', action='store_true',
help='freeze files')
cmd_parser.add_argument('-q', '--qstr-header',
help='qstr header file to freeze against')
cmd_parser.add_argument('-mlongint-impl', choices=['none', 'longlong', 'mpz'], default='mpz',
help='long-int implementation used by target (default mpz)')
cmd_parser.add_argument('-mmpz-dig-size', metavar='N', type=int, default=16,
help='mpz digit size used by target (default 16)')
cmd_parser.add_argument('files', nargs='+',
help='input .mpy files')
args = cmd_parser.parse_args()
if __name__ == '__main__':
main()
通常,我一直在通过命令行调用它,但我计划import
此脚本并这样调用它:theScript.main()
.
问题是(我不认为)sys.argv
将是这个函数所期望的; sys.argv
将设置为调用脚本的值。
模拟我从另一个脚本调用theScript
但好像它是从命令行调用的最 Python 方法是什么?
我应该在调用theScript.main()
之前手动修改sys.argv
吗?
不要更改sys.argv
。 默认情况下,parse_args
采用sys.argv[1:]
,但如果您想允许从另一个 python 模块调用main
,您可以传递其他参数。
def main(args):
import argparse
...
args = cmd_parser.parse_args(args)
main(["-d","-f"])