2016-11-20 15 views
1

Приведенный ниже код, как это сделать, как установить файл в параметрах запуска?Необязательные аргументы командной строки

Я использую Spyder и поставил -h -s -p -o в качестве аргументов, но я не уверен, как указать именованный файл для опции -o.

class CommandLine: 
    def __init__(self): 
     opts, args = getopt.getopt(sys.argv[1:],'hspw:o:') 
     opts = dict(opts) 

     if '-o' in opts: 
      self.outfile = opts['-o'] 
     else: 
      self.outfile = None 
+0

Вы должны использовать модуль [argparse] (https://docs.python.org/2.7/library/argparse.html) для командной строки аргумента синтаксического анализа. – skrrgwasme

+0

Чтобы передать аргументы командной строки Spyder, см. Это: http://stackoverflow.com/questions/26679272/not-sure-how-to-use-argv-with-spyder –

ответ

1

Это простой учебник, посвященный argpase.

Но прежде всего, я рекомендую вам прочитать official documentation, если вы хотите иметь больше контроля при использовании модуля argparse.

Также, если вы хотите передать аргументы Spyder, я бы порекомендовал ответ @Carlos Cordoba, который предложил посмотреть это answer.

Мой учебник сценарий:

import argparse 

class CommandLine: 
    def __init__(self): 
     parser = argparse.ArgumentParser(description = "Description for my parser") 
     parser.add_argument("-H", "--Help", help = "Example: Help argument", required = False, default = "") 
     parser.add_argument("-s", "--save", help = "Example: Save argument", required = False, default = "") 
     parser.add_argument("-p", "--print", help = "Example: Print argument", required = False, default = "") 
     parser.add_argument("-o", "--output", help = "Example: Output argument", required = False, default = "") 

     argument = parser.parse_args() 
     status = False 

     if argument.Help: 
      print("You have used '-H' or '--Help' with argument: {0}".format(argument.Help)) 
      status = True 
     if argument.save: 
      print("You have used '-s' or '--save' with argument: {0}".format(argument.save)) 
      status = True 
     if argument.print: 
      print("You have used '-p' or '--print' with argument: {0}".format(argument.print)) 
      status = True 
     if argument.output: 
      print("You have used '-o' or '--output' with argument: {0}".format(argument.output)) 
      status = True 
     if not status: 
      print("Maybe you want to use -H or -s or -p or -p as arguments ?") 


if __name__ == '__main__': 
    app = CommandLine() 

Теперь в терминале или с Spyder:

$ python3 my_script.py -H Help -s Save -p Print -o Output 

Выход:

You have used '-H' or '--Help' with argument: Help 
You have used '-s' or '--save' with argument: Save 
You have used '-p' or '--print' with argument: Print 
You have used '-o' or '--output' with argument: Output 

И когда вы используете -h или --help в качестве аргумента вы У этого выхода есть:

$ python3 my_script.py -h 

Выход:

usage: my_script.py [-h] [-H HELP] [-s SAVE] [-p PRINT] [-o OUTPUT] 

Description for my parser 

optional arguments: 
    -h, --help   show this help message and exit 
    -H HELP, --Help HELP Example: Help argument 
    -s SAVE, --save SAVE Example: Save argument 
    -p PRINT, --print PRINT 
         Example: Print argument 
    -o OUTPUT, --output OUTPUT 
         Example: Output argument