Domanda

Ho un interprete a riga di comando (o "interprete dei comandi line-oriented" nel pitone docs per il modulo cmd) per un programma che mi piacerebbe aggiungere l'interfaccia utility a riga di comando per
per esempio, ora un aspetto sessione come questo:. (% per guscio pronta, :) è il mio prompt personalizzato)
% tasks (invoca linea di comando interprete)
:) clockHours Teaching_Sara_to_coregister_T1_to_T2
:) exit
Inoltre, voglio che questa interfaccia:
% tasks clockHours Teaching_Sara_to_coregister_T1_to_T2

I comandi immaginare interprete personalizzati mappati sul subcommands nella utilità della riga di comando. Fa esiste una biblioteca per fare questi insieme? Sarebbe bello non dover scrivere codice di completamento due volte, il comando codice struttura due volte, ecc In caso contrario, qualche consiglio da darmi se cerco di implementare questo comportamento, o pensieri su quanto utile potrebbe essere?

Ovviamente ho perso il vantaggio di semplici variabili temporanee, che è il motivo per cui ero utilizzando l'approccio interprete per cominciare, ma molti dei miei comandi interprete personalizzato non si basano su questo comportamento, o potrebbe essere facilmente modificato per non richiedere esso - è che sottoinsieme che voglio subcommands utility a riga di comando per.

È stato utile?

Soluzione

modulo cmd può essere sufficiente per quello che vuoi, se ho capito bene il problema.

La soluzione finale può essere vicino al di sotto di esempio:

import cmd
import sys

class MyCmd(cmd.Cmd):
    def do_hello(self, line):
        print "hello"
    def do_exit(self, line):
        return True

if __name__ == '__main__':
    my_cmd = MyCmd()

    if len(sys.argv) > 1:
        my_cmd.onecmd(' '.join(sys.argv[1:]))
    else:
        my_cmd.cmdloop()

dando questo comportamento:

C:\_work\home>jython cmdsample.py hello
hello

C:\_work\home>jython cmdsample.py
(Cmd) hello
hello
(Cmd) exit

C:\_work\home>

Altri suggerimenti

Un'altra cosa che si può trovare utile è cmdln modulo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top