Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何保存上一个命令行参数_Python_Python 2.7_Command Line Interface_Docopt - Fatal编程技术网

Python 如何保存上一个命令行参数

Python 如何保存上一个命令行参数,python,python-2.7,command-line-interface,docopt,Python,Python 2.7,Command Line Interface,Docopt,我正在使用docopt编写我的第一个python命令行工具,但遇到了一个问题 我的结构是这样的: Usage: my-tool configure my-tool [(-o <option> | --option <option>)] ... 有没有一种方法可以在不改变参数结构的情况下实现这一点? 我正在寻找一种方法来避免我的工具configure[(-o |--option)]因为您在两个不同的实例上运行它,所以最好将值存储在某种config/json文件

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

我的结构是这样的:

Usage:
  my-tool configure
  my-tool [(-o <option> | --option <option>)]
  ...
有没有一种方法可以在不改变参数结构的情况下实现这一点?
我正在寻找一种方法来避免
我的工具configure[(-o |--option)]

因为您在两个不同的实例上运行它,所以最好将值存储在某种config/json文件中,该文件将在每次运行“configure”时清除


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


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

在调用
configure
函数之前更新选项如何?例如,读取配置文件以获取以前的命令选项,然后更新
option
变量以包含
-o
选项(如果存在),然后将其传递给
configure
函数。问题是如何获取以前的CL参数。当运行第二个命令“my tool configure”时,参数obj中没有设置。没有可使用docopt读取的配置文件。嗯,是的,这看起来会起作用。我会尝试一下。我只是希望有一种更干净的方法来执行,而不必创建外部文件或设置环境变量。您可以对其进行重构,然后编写整个过程然后,只要该单例在后台运行(或者直到触发另一个“configure”命令),您就可以通过调用“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
    ...
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