gpt4 book ai didi

python - 在不修改脚本的情况下将脚本作为函数调用时模拟 sys.argv

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:24 24 4
gpt4 key购买 nike

我有一个使用这种结构的现有脚本

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()

通常,我一直通过命令行调用它,但我计划导入这个脚本并这样调用它:theScript.main()

问题是(我不认为)sys.argv 将是这个函数所期望的; sys.argv 将设置为调用脚本的值。

什么是最 Pythonic 的方式来模拟我从另一个脚本调用 theScript 但好像它是从命令行调用的?

我是否应该在调用 theScript.main() 之前手动修改 sys.argv

最佳答案

不要改变sys.argvparse_args 默认采用 sys.argv[1:],但如果你想允许从另一个 python 模块调用 main,你可以传递其他参数.

def main(args):
import argparse
...
args = cmd_parser.parse_args(args)

main(["-d","-f"])

关于python - 在不修改脚本的情况下将脚本作为函数调用时模拟 sys.argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021142/

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