使用 Python 的 Cmd.cmd 完成制表符

发布于 2024-08-15 14:28:43 字数 600 浏览 8 评论 0原文

在使用 python 中的 Cmd.cmd 框架测试了一段时间后,我注意到一个我不知道该怎么办的问题。另外,我相信要在几个小时前让它工作(或者我只是疯了),所以这更奇怪。

我有以下示例代码,在 Windows 和 Linux 系统上进行了测试(因此这不是 Windows 问题),但制表符补全功能根本不起作用。

如果我在 Python 2 中使用完全相同的代码,它确实可以在 Linux 系统上运行(但不能在 Windows 系统上运行)

import cmd
class Shell ( cmd.Cmd ):    
    def do_test ( self, params ):
        print( 'test: ' + params )

    def do_exit ( self, params ):
        return True

    def do_quit ( self, params ):
        return True

if __name__ == '__main__':
    x = Shell()
    x.cmdloop()

你知道为什么会发生这种情况吗?或者我可以做什么来使制表符补全成为可能?

After testing a while with the Cmd.cmd framework in python, I noticed a problem I don't know what to do about. Plus I believe to have this working some hours before (or I'm just crazy), so this is even more weird.

I have the following example code, tested on both Windows and Linux systems (so it's not a Windows problem), but tab completion simply doesn't work.

If I use the exact same code in Python 2 it does work on the Linux system (not on the Windows one though)

import cmd
class Shell ( cmd.Cmd ):    
    def do_test ( self, params ):
        print( 'test: ' + params )

    def do_exit ( self, params ):
        return True

    def do_quit ( self, params ):
        return True

if __name__ == '__main__':
    x = Shell()
    x.cmdloop()

Do you know why this happens, or what I can do, to make tab completion possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

吻风 2024-08-22 14:28:43

它实际上对我在 Linux 上的 Python 2 和 3 都有效。但是,我的 python 设置是使用 readline 支持进行编译的,这是根据 cmd 文档。我怀疑你的 Linux Python 3 没有用它编译。

不幸的是,readline 是 Unix 特定的。有关 Windows 上其他选项的讨论,请参阅 Windows 中的 python Tab 补全

It actually works for me on Linux on both Python 2 and 3. However, my python setup was compiled with readline support, which is required for it to be automatic per the cmd documentation. I suspect your Linux Python 3 wasn't compiled with it.

Unfortunately, readline is Unix-specific. See python tab completion in windows for a discussion of other options on Windows.

走走停停 2024-08-22 14:28:43

从这里安装 pyreadline 模块后,我让它在 Windows 上工作 https://pypi.python。 org/pypi/pyreadline/2.0

I got it to work on windows after I installed the pyreadline module from here https://pypi.python.org/pypi/pyreadline/2.0

桃扇骨 2024-08-22 14:28:43

在 Mac 上有独立的 GNU readline 模块
您可以通过 pip install gnureadline 获取它。
它已使用 Python 2.6、2.7、3.2 和 3.3 进行了测试。

On Mac there is the Stand-alone GNU readline module.
You can get it with pip install gnureadline.
It has been tested with Python 2.6, 2.7, 3.2 and 3.3.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文