如何保存以前的命令行参数



我正在使用docopt编写我的第一个python命令行工具,并且遇到了一个问题。

我的结构是这样的:

Usage:
  my-tool configure
  my-tool [(-o <option> | --option <option>)]
  ...

我试图找到一种方法来运行my-tool -o foo-bar第一,然后可选地通过值'foo-bar'到我的配置函数,如果我运行my-tool configure下一步。

在伪码中,翻译为:

def configure(option=None):
    print option # With the above inputs this should print 'foo-bar'
def main():
    if arguments['configure']:
       configure(option=arguments['<option>'])
       return
    ...

是否有一种方法可以在不改变参数结构的情况下使其工作?我正在寻找一种方法来避免my-tool configure [(-o <option> | --option <option>)]

由于您在2个不同的实例上运行此操作,因此最好将值存储在某种配置/json文件中,该文件将在每次运行"configure"时清除。

import json
def configure(config_file):
   print config_file[opt_name] # do something with options in file
   # clear config file
   with open("CONFIG_FILE.JSON", "wb") as f: config = json.dump([], f)
def main():
    # load config file
    with open("CONFIG_FILE.JSON", "rb") as f: config = json.load(f)
    # use the configure opt only when called and supply the config json to it
    if sys.argv[0] == ['configure']:
       configure(config)
       return
    # parse options example (a bit raw, and should be done in different method anyway)
    parser = OptionParser()
    parser.add_option("-q", action="store_false", dest="verbose")
    config_file["q"] = OPTION_VALUE

我试着写一些脚本来帮助你,但这有点超出了我(目前)的新手技能水平。然而,我开始采用的工具/方法可能会有所帮助。尝试使用sys.argv(它在脚本运行时生成所有参数的列表),然后使用一些正则表达式(import re…)。

我希望这能帮助别人帮助你。(:

相关内容

  • 没有找到相关文章