2015-12-10 2 views
-1

У меня есть скрипт python, который обновляет значения переменных внутри файла, значения переменных вкраплены, но они должны передаваться во время выполнения с использованием параметров командной строки. Мой код выглядит следующим образом:Как передать значение опции.parser в другую переменную с помощью python?

import subprocess 
    import time 
    import sys 
    import string 
    from optparse import OptionParser 
    from optparse import OptionGroup 
    def main(): 
     usage = "usage: %prog [options]" 
     parser = OptionParser() 
     try: 
      parser = parse_options(parser) 
      (options, args) = parser.parse_args() 
     except SystemExit: 
      return 0 
     myfile = open('over.tex','r') 
     data = myfile.readlines() 
     myfile.close() 
     val = time.strftime("%d/%m/%Y") 
     for i in range(len(data)): 
      test_dict = dict(var_Title = "ABC doc" 
           , var_Doc = "136" 
           , var_ECN = "XXXX" 
           , var_date = time.strftime("%d/%m/%Y") 
           , var_ProjectName= str(options.project_name) 
           , var_version = str(options.version)) 
      test_tuple = ('var_Title' 
          , 'var_Doc' 
          , 'var_Rev' 
          , 'var_ECN' 
          , 'var_date' 
          , 'var_ProjectName' 
          , 'var_version' 
          ) 
      for key in test_tuple: 
       print test_dict[key] 
       data[i] = data[i].replace((key), (test_dict[key]))      
     with open('over.tex', 'w') as file: 
      file.writelines(data) 
     if options.project_name: 
      var = "WELCOME" 
     if options.version: 
      print "1.1" 
    def parse_options(parser): 
     group = OptionGroup(parser, "Target options","CMake Target properties") 
     group.add_option("", "--project_name", action="store_true",default=False,dest="project_name",help="Project name") 
     group.add_option("", "--version", action="store_true",default=False,dest="version",help="Version") 
     parser.add_option_group(group) 
     return parser 

    if __name__ == "__main__": 
     main() 

Теперь, как вы можете видеть, я Пазинг значения в «var_ProjectName» и «var_version» с помощью option.parser, но когда я выполнить его в командной строке как:

myscript.py --project_name --version 

в файле против varible PROJECT_NAME и Project_version я получить что-то следующим образом:

Project_name = True 
Project_version = True 

Но это не то, что я хочу .Я хочу, чтобы следующим образом:

Project_name = WELCOME 
Project_version = 1.1 

Итак, пожалуйста, помогите, как я могу его получить, и что я делаю неправильно? Я хочу передать значения всем переменным из параметров comandilne только так, что я только пытаюсь использовать две переменные (имя_проекта и версия).

ответ

0

Вместо action="store_True" указать другой action. Например, с

group.add_option(
    "", "--version", 
    action="store", dest="version", help="Version") 
group.add_option(
    "", "--welcome-project", 
    action="store_const", const="WELCOME", dest="project_name", 
    help="Project name") 

вы можете назвать вашу программу с аргументами --version 1.1 --welcome-project и получить варианты

project: "WELCOME" 
version: "1.1" 
+0

фактически решение которой и предложили в этом мы должны указать значения в командной строке (например, myscript.py --version 1.1), но я не хочу указывать там значение. я хочу, чтобы скрипт принимал значение, указанное в разделе, если option.project_name так же и для версии. Команде пользователю просто нужно ввести myscript.py --project_name --version, которое оно имеет и имеет значения указанных переменных. Как это получить? – Learner

+0

@Learner У меня создается впечатление, что '--welcome-project' в этом ответе решает вашу проблему. Вы можете установить нужное значение с помощью 'const ='. – phihag

 Смежные вопросы

  • Нет связанных вопросов^_^