当前位置: 首页 > 面试题库 >

如何使python命令行程序自动完成任意内容而不是解释程序

梅安平
2023-03-14
问题内容

我知道如何在python解释器中(在Unix上)设置python对象的自动完成功能

  • Google展示了许多热门内容,以说明如何执行此操作。
  • 不幸的是,有太多的参考文献,很难找到我需要做的事情,而这略有不同。

我需要知道如何在以python编写的命令行程序中启用,制表符/自动完成任意项。

我的特定用例是需要发送电子邮件的命令行python程序。我希望能够在用户键入部分电子邮件地址(并有选择地按TAB键)时自动完成电子邮件地址(磁盘上有地址)。

我不需要它就可以在Windows或Mac上运行,而只需Linux。


问题答案:

使用Python的readline绑定。例如,

import readline

def completer(text, state):
    options = [i for i in commands if i.startswith(text)]
    if state < len(options):
        return options[state]
    else:
        return None

readline.parse_and_bind("tab: complete")
readline.set_completer(completer)

官方模块文档没有更多详细信息,请参阅readline文档以获取更多信息。



 类似资料:
  • 问题内容: 我知道如何在python解释器中(在Unix上)设置python对象的自动完成功能。 Google展示了许多热门内容,以说明如何执行此操作。 不幸的是,有太多的参考文献,很难找到我需要做的事情,这略有不同。 我需要知道如何在以python编写的命令行程序中启用,制表符/自动完成任意项。 我的特定用例是需要发送电子邮件的命令行python程序。我希望能够在用户键入部分电子邮件地址(并有选

  • 我曾试图关闭android应用程序使用adb命令和appium服务器,但它是最小化应用程序,而不是关闭。我用下面的命令关闭。 adb shell am force-stop com.package.name 如果我尝试这个命令杀死进程,它会说,

  • 问题内容: 您如何使python程序自动重新启动?因此,假设有一个非常简单的程序,例如: 现在,在Python Shell中,您将必须按“运行”按钮,然后按“运行模块(F5)”,或者仅按键盘上的“ f5”按钮。那是您第一次运行它。程序结束后,您将返回到“ Cheese.py”文件,然后按“ f5”再次运行该程序。大家和我在一起吗?好的,所以我的问题是,如何使程序自动重新启动,而无需手动执行? 问题

  • Pip命令不返回任何内容。我输入$pip[command],得到的只是一个没有任何指令运行的新行。 %CommonProgramFiles%\Microsoft Shared\Windows Live;%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\WBEM;%SystemRoot%\System32\windowspowerShe

  • 问题内容: 我需要测试与数据库的JDBC连接。执行此操作的Java代码应该很简单: 驱动程序管理器将为给定的连接URL查找合适的驱动程序。但是我需要能够在运行时加载JDBC驱动程序(jar)。即我在运行上面代码片段的Java应用程序的类路径上没有JDBC驱动程序。 因此,我可以使用以下代码加载驱动程序: 但是,由于我无法告诉它使用哪个类加载器,驱动程序管理器仍然不会选择它。我尝试设置当前线程的上下

  • 问题内容: 因此,我有一些代码等待X发生,然后创建一个线程并执行processEmail。 我正在寻找的是一种代码,即使processEmail在另一个线程中发生,代码也可以继续等待X,但是当前代码只是等待线程完成,然后再等待X再次发生。 编辑:仅供参考,我什么都不需要在下面的代码中进一步输出processEmail.main(),因此不需要我等待其输出。 由Jean提供的答案:移除main之后的