Есть ли шаблон для написания программы на Python, которая отвечает как программа оболочки

Я хочу изменить написанную мной программу на Python, чтобы она принимала команды из командной строки, а затем отвечала на эти команды как оболочка.

Есть ли стандартный шаблон или библиотека для этого, или я просто использую что-то вроде while True: а также stdin.readline()?

1 ответ

Решение

Это то, что cmd Модуль, входящий в стандартную библиотеку, предназначен для:

Cmd Класс предоставляет простую структуру для написания интерпретаторов команд, ориентированных на строки. Они часто полезны для тестовых наборов, административных инструментов и прототипов, которые позже будут обернуты в более сложный интерфейс.

и из раздела Пример:

cmd Модуль в основном полезен для создания пользовательских оболочек, которые позволяют пользователю работать с программой в интерактивном режиме.

и быстрый демонстрационный пример:

import cmd

class CmdDemo(cmd.Cmd):
    intro = "Welcome to the cmd module demo. Type any command, as long as it's black!"
    prompt = '(demo) '

    def default(self, arg):
        print("Sorry, we do't have that color")

    def do_black(self, arg):
        """The one and only valid command"""
        print("Like Henry Ford said, you can have any color you like.")
        print(f"You now have a black {arg}")

    def do_exit(self, arg):
        """Exit the shell"""
        print('Goodbye!')
        return True

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

который при запуске производит:

Welcome to the cmd module demo. Type any command, as long as it's black!
(demo) ?

Documented commands (type help <topic>):
========================================
black  exit  help

(demo) help black
The one and only valid command
(demo) red Volvo
Sorry, we do't have that color
(demo) black Austin Martin
Like Henry Ford said, you can have any color you like.
You now have a black Austin Martin
(demo) exit
Goodbye!
Другие вопросы по тегам