gpt4 book ai didi

python - 如何 "hijack"并修改命令行参数

转载 作者:行者123 更新时间:2023-11-30 23:16:56 26 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本应该充当另一个脚本的(非常薄的)包装器。例如

./myprogram_wrapper.py -a -b varc -d vard

应该在内部进行一些修改varcvard并调用的处理

./myprogram.py -a -b varc_modified -d vard_modified

一个重要的细节是,某些参数(例如 -a-b)是可选的。

我正在努力解决的是:

  1. 如何获取命令行参数来获取初始命令行。使用 sys.argv 数组是最佳选择吗?或者 argparse 可以提供帮助吗?
  2. 如何使用修改后的参数集调用其他脚本?

最佳答案

假设 myprogram.py 的结构如下:

import argparse
import sys

def main(args):
"""Does all of the work."""
...

def parse_args(args):
"""Parses the arguments."""
...
return parsed_args

if __name__ == "__main__":
main(parse_args(sys.argv))

然后这变得非常简单,myprogram_wrapper.py 可以如下所示:

import sys

from myprogram import main, parse_args

def modify_args(args):
"""Modify the arguments."""
parsed_args = parse_args(args) # reuse the original parser
... # add your own changes
return modified_args

if __name__ == "__main__":
main(modify_args(sys.argv))

像这样构造 myprogram.py 的另一个优点是,也可以轻松单独测试脚本的不同功能元素。我在 my own project 中使用了类似的结构和 tests .

关于python - 如何 "hijack"并修改命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529167/

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