如何拥有行为类似于bash输入的python输入?

时间:2018-11-08 07:19:04

标签: python bash

我想在脚本开始后在python脚本中获取用户输入,而不是作为命令行参数。

我尝试使用pythons输入法,但这的行为类似于标准的文本框。 python中是否有一种输入类型,其行为类似于具有预测性建议和bash语法的bash终端,例如file{1..7}

1 个答案:

答案 0 :(得分:0)

如果要添加使用的操作系统以及想要“类似bash”的输入的目的,这将很有帮助。我猜最常见的方式是自己实现一个CLI,然后调用bash,但这可能要花一点时间,具体取决于要实现的目标。

为实现CLI,我建议看一下click-package。只是一个简单的例子:

import click
import click_repl
from subprocess import Popen, DEVNULL
import os
from prompt_toolkit.history import FileHistory

@click.group(invoke_without_command=True)
@click.pass_context
def cli(ctx):
    if ctx.invoked_subcommand is None:
        ctx.invoke(repl)

@cli.command()
@click.option("--directory", "-d", prompt=True, help="Directory to cd into")
def cd(directory):
    command = "cd {0}".format(directory)
    Popen(command, shell=True, stdin=None, stdout=DEVNULL, stderr=None)

@cli.command()
def repl():
prompt_kwargs = {
    'history': FileHistory(os.path.expanduser('~/.repl_history'))
}
click_repl.repl(click.get_current_context(), prompt_kwargs)

try:
    cli(obj={})
except SystemExit:
    pass

赶上SystemExit很重要,因为在执行命令后,单击总是抛出一个。而且,您必须实现要允许作为单击命令的每个bash命令。