我想在脚本开始后在python脚本中获取用户输入,而不是作为命令行参数。
我尝试使用pythons输入法,但这的行为类似于标准的文本框。 python中是否有一种输入类型,其行为类似于具有预测性建议和bash语法的bash终端,例如file{1..7}
答案 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命令。