📜  菜单驱动的Python程序来执行 Linux 命令(1)

📅  最后修改于: 2023-12-03 15:11:53.802000             🧑  作者: Mango

菜单驱动的Python程序来执行Linux命令

本文介绍一个菜单驱动的Python程序,它帮助用户执行Linux命令,使用起来非常简单方便。该程序基于Python 3.x开发,支持Windows和Linux操作系统。

程序功能
  • 展示预定义的命令列表
  • 接收用户输入的命令编号
  • 执行用户选择的命令
  • 支持添加、修改、删除自定义命令
代码实现
程序的主体

程序首先定义了一个字典commands,其中预定义了一些命令及其对应的命令行。接着进入main函数,该函数显示命令列表,读取用户选择的命令编号,并执行选择的命令:

import os

commands = {'1': 'ls -l', '2': 'whoami', '3': 'pwd'}

def display_commands():
    print('命令列表:')
    for i in commands:
        print(f'{i}. {commands[i].split()[0]}')

def get_command_choice():
    choice = input('请输入命令编号:')
    return commands.get(choice)

def execute_command():
    command = get_command_choice()
    if command:
        os.system(command)
    else:
        print('命令不存在!')

def main():
    display_commands()
    execute_command()

if __name__ == '__main__':
    main()

执行该程序,用户输入1后,可以看到ls -l的输出:

$ python3 menu_program.py
命令列表:
1. ls
2. whoami
3. pwd
请输入命令编号:1
total 4
-rw-r--r--  1 user  user   217 Jun  1 11:42 menu_program.py
自定义命令

用户可以通过添加、修改、删除操作来管理自定义命令,程序将自定义命令存储在一个文本文件中,并在每次程序启动时读取:

import os

COMMANDS_FILE = '.commands'

def save_commands(commands):
    with open(COMMANDS_FILE, 'w') as f:
        for command in commands:
            f.write(command + '\n')

def load_commands():
    if os.path.exists(COMMANDS_FILE):
        with open(COMMANDS_FILE) as f:
            commands = [line.strip() for line in f.readlines()]
            return dict(enumerate(commands, start=len(commands)))
    else:
        return {}

def add_command():
    command = input('请输入命令:')
    commands = load_commands()
    commands[len(commands)] = command
    save_commands(commands)

def modify_command():
    index = int(input('请输入要修改的命令编号:'))
    commands = load_commands()
    command = input('请输入修改后的命令:')
    commands[index] = command
    save_commands(commands)

def delete_command():
    index = int(input('请输入要删除的命令编号:'))
    commands = load_commands()
    del commands[index]
    save_commands(commands)

def display_commands():
    commands = load_commands()
    print('命令列表:')
    for i in commands:
        print(f'{i}. {commands[i].split()[0]}')

def get_command_choice():
    commands = load_commands()
    choice = input('请输入命令编号:')
    if choice.isdigit() and int(choice) < len(commands):
        return commands.get(int(choice))
    else:
        return None

def execute_command():
    command = get_command_choice()
    if command:
        os.system(command)
    else:
        print('命令不存在!')

def main():
    while True:
        display_commands()
        print('1. 执行命令')
        print('2. 添加命令')
        print('3. 修改命令')
        print('4. 删除命令')
        print('0. 退出')
        choice = input('请输入操作编号:')
        if choice == '1':
            execute_command()
        elif choice == '2':
            add_command()
        elif choice == '3':
            modify_command()
        elif choice == '4':
            delete_command()
        elif choice == '0':
            break
        else:
            print('输入有误!')

if __name__ == '__main__':
    main()

用户可以选择添加、修改、删除命令,修改和删除前要求用户输入要修改/删除的命令编号,所有自定义命令保存在文件.commands中,文件不存在时将创建一个空文件。

小结

本文介绍了一个菜单驱动的Python程序,可以帮助用户执行预定义的和自定义的Linux命令。程序使用字典存储命令及其对应的命令行,可以添加、修改、删除自定义命令,自定义命令保存在文件中,在每次程序启动时读取。该程序简单易用,适合初学者学习和使用。