问题标签 [python-cmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5165 浏览

python - 如何在 python cmd 中清除屏幕?

如何从 python cmd 中的以前结果中清除屏幕?我想在循环的每一级清除屏幕,我的意思是如何清除结果并打印新的而不是那个?

0 投票
2 回答
314 浏览

python - Python Cmd:如何编辑最后一个命令

我正在开发一个基于 Cmd Python 模块的小型命令行应用程序。我看不到如何在控制台提示符中显示最后一个命令,以便用户可以对其进行编辑并重新提交。

问题不在于如何存储最后一个命令。它是关于如何在提示中显示并允许用户编辑它

0 投票
1 回答
197 浏览

python - python cmd模块退出快捷方式

使用 pythoncmd模块,我希望能够使用 Ctrl+D 退出命令行应用程序。但是,默认行为打印^D而不是退出应用程序。

阅读文档,我似乎无法找到一种方法。有什么提示吗?

0 投票
1 回答
4668 浏览

python - 在 Python cmd 模块中处理 CTRL-C

我使用 cmd 模块编写了一个 Python 3.5 应用程序。我想实现的最后一件事是正确处理 CTRL-C (sigint) 信号。我希望它的行为或多或少像 Bash 那样:

  • 在光标所在的点打印 ^C
  • 清除缓冲区以便删除输入文本
  • 跳到下一行,打印提示,等待输入

基本上:

这是作为可运行示例的简化代码:

这几乎可以工作。当我按 CTRL-C 时,^C 会打印在光标处,但我仍然必须按 Enter。然后,该precmd方法注意到self._interrupted处理程序设置的标志,并返回一个空行。这是我所能接受的,但我想以某种方式不必按该输入。

我想我需要以某种方式强制input()返回,有人有想法吗?

0 投票
1 回答
2970 浏览

python - python cmd模块中的持久历史记录

是否有任何方法可以从 Python 配置 CMD 模块以保持持久的历史记录,即使在交互式 shell 关闭后也是如此?

当我按下向上和向下键时,我想访问以前在运行 python 脚本的情况下输入到 shell 中的命令以及我在此会话期间刚刚输入的命令。

如果它有任何帮助 cmd 使用set_completerreadline 模块导入的

0 投票
1 回答
48 浏览

python-3.x - 在用户按下输入之前跟踪当前输入

我正在使用 Python 的cmd模块来处理终端输入循环。

我有一个在后台运行的线程,当它收到消息时会在终端中打印出一些东西。这些消息破坏了视觉用户输入:

我在这里问了一个相关问题,基本上被告知避免破坏用户输入的一种方法是跟踪用户输入,这样当收到消息时,我可以打印消息并重新打印用户输入。当我问这个问题时,我没有使用该cmd模块。

使用该cmd模块时,我将如何跟踪用户当前键入的内容,以便之后可以重新打印?

0 投票
1 回答
150 浏览

python - 在 Python 中实例化嵌套的 Cmd 解释器

您好我正在寻找使用 Cmd 模块在 Python 中创建嵌套解释器。

我设置了一个动态模块加载,因为我希望我的项目易于扩展(即将一个新的 python 文件添加到一个文件夹中,并且无需更改能够加载它的主代码)。

我的嵌套解释器当前设置如下:

这是必要的,因为为了创建嵌套解释器,我必须将 MainConsole 作为第二个变量传递给 SubConsole 类。这样做的问题是,这样我只能在这个方法中创建类,并且我将无法添加一个新的控制台模块文件,我可以在没有此方法中的定义的情况下动态加载该文件。

有什么解决方法吗?

0 投票
0 回答
96 浏览

python - 使用python3 cmd模块不断登录控制台

我正在尝试使用 python 的 CMD 模块进行交互来制作类似于服务器的东西,但是如果没有命令“printLogs”,我找不到任何关于在运行时将日志打印到控制台的信息。与服务器交互的一个很好的例子是 steamCMD。有没有办法使用 python 的 CMD 模块来做到这一点?

steamCMD窗口截图: 蒸汽CMD

0 投票
1 回答
789 浏览

python - Twisted 和命令行界面

我有一个程序,我想做两件事:

  1. 与服务器交互并响应来自服务器的事件。我正在使用扭曲做这个。

  2. 为用户提供命令行提示,他可以在其中发出其他命令。到目前为止,我正在为此使用 python cmd 模块。

除了拥有两个线程之外似乎别无选择,因为 readline 只有一个阻塞接口并且需要处理诸如自动完成之类的事情。另一方面,Twisted 必须连续运行反应器。

现在的问题是,为此处理 Ctrl-C 似乎非常困难。简单的解决方案似乎是让命令行在主线程中运行,并且只使用 reactor.callFromThread 与程序的其余部分进行每次交互。这很容易,因为覆盖 Cmd.onecmd 可以以通用方式执行此操作。但是,当我尝试在线程中生成反应器时

我立即得到一个例外

每个使用twisted 的人都坚持twisted reactor 应该在主线程中运行,因为这样会是一个更好的设计。

当尝试这样做并在主线程中扭曲运行时,它将捕获 Ctrl-C,退出反应器,我被一个不退出的线程卡住,因为在 cmdloop 中对 input() 的调用不会返回. 我尝试寻找解决方案以及如何摆脱 input() 调用,但每个人都坚持命令行界面应该在主线程中运行。

我发现的一个可能的选择是将twisted作为主线程运行并使输入线程成为守护进程,因此它应该在反应器退出时退出,但是守护进程标志没有改变任何东西(当主线程退出时线程没有退出) . 此外,这可能很危险,因为线程在被杀死时可能正在做一些重要的事情。

有没有办法解决这个问题?

0 投票
0 回答
261 浏览

python - Python 3 cmd.Cmd 在 do_function() 后追加空格:完成

我正在将 cmd.Cmd 库用于我正在构建的命令行工具,并且对使用 tab 自动完成命令感到有点恼火,命令行留在命令的末尾而不是附加空格轻松方便地添加参数。

给用户;

而我想看看;

空间,所以我可以更容易地添加一个值(在这种情况下)打印。

有没有办法在制表符完成后强制附加空格?我假设我可以在 cmd.Cmd 类中设置一个参数来强制/允许这个......但我找不到任何文档。

提前致谢。