Реализация “[команда] [действие] [параметр]” разрабатывает интерфейсы командной строки?

git stash сохраняет ваши изменения, но сбрасывает состояние до последнего коммита. Чтобы восстановить сохраненные (не зафиксированные) изменения, просто запустите git stash apply. ( Узнайте больше в документации. )

14
задан jfs 18 June 2009 в 03:26
поделиться

4 ответа

Прямо из одного из моих сценариев:

import sys

def prog1_func1_act1(): print "pfa1"
def prog2_func2_act2(): print "pfa2"

commands = {
    "prog1 func1 act1": prog1_func1_act1,
    "prog2 func2 act2": prog2_func2_act2
}

try:
    commands[" ".join(sys.argv[1:])]()
except KeyError:
    print "Usage: ", commands.keys()

Это - довольно быстрое и грязное решение, но работает отлично для моего использования. Если бы я должен был очистить его немного, то я, вероятно, добавил бы argparse к соединению для парсинга позиционного и аргументы ключевого слова.

2
ответ дан 1 December 2019 в 09:13
поделиться

cmd модуль, вероятно, работал бы хорошо на это.

Пример:

import cmd

class Calc(cmd.Cmd):
    def do_add(self, arg):
        print sum(map(int, arg.split()))

if __name__ == '__main__':
    Calc().cmdloop()

Выполнение это:

$python calc.py
(Cmd) add 4 5
9
(Cmd) help

Undocumented commands:
======================
add  help

(Cmd)

См. документы Python или сайт PyMOTW для большего количества информации.

9
ответ дан 1 December 2019 в 09:13
поделиться

Python имеет модуль для парсинга параметров командной строки, optparse.

1
ответ дан 1 December 2019 в 09:13
поделиться

Вот мое предложение.

  1. Измените свою грамматику немного.

  2. Используйте optparse.

Идеально также позволяя более гибкий парсинг, например,

jump_to_folder -n theappname -v2 cmd 
jump_to_folder -n theappname cmd source 
jump_to_folder -n theappname -v2 cmd source 
jump_to_folder -n theappname -v1 cmd build 
jump_to_folder -n theappname -1 cmd build 
jump_to_folder -n theappname -v2 cmd build

Затем у Вас есть 1 или 2 args: команда всегда является первым аргументом. Это - дополнительный аргумент, всегда второй аргумент.

Все остальное - опции без определенного порядка.

0
ответ дан 1 December 2019 в 09:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: