【问题标题】:Automatic command line input from python script into running python shell-script从 python 脚本自动命令行输入到运行的 python shell-script
【发布时间】:2019-11-16 07:24:12
【问题描述】:

我有一个 python shell 脚本,它通过导入 CMD 进行格式化,命令结构为do_*(self, arg)。当我输入到命令行时,该脚本运行良好,但我正在尝试编写一个脚本来处理数据,确定要运行的命令并在运行时将命令输入到 shell 以执行所需的命令。有这种可能吗?如果有,怎么做?

示例:

 #!/usr/bin/env python
class exampleShell(cmd.Cmd):
def do_exit(self, inp):
        print("Bye")
        return True
MyPrompt().cmdloop()

因此,如果我运行脚本并在命令行中键入 exit,它将打印“Bye”,但我希望能够运行一个单独的脚本,该脚本可以将退出命令发送到脚本而无需自己输入。

【问题讨论】:

  • 您能否更详细地描述所需的操作?举个例子会有所帮助。
  • 我发现 exampleShell().onecmd('exit') 会模拟输入并执行命令,如果我把它放在 shell 脚本中,但我试图把它放在一个不同的脚本。

标签: python python-3.x shell command-line


【解决方案1】:

您似乎正在尝试编写命令解释器允许 Python 脚本访问其命令?

考虑分解出公共部分,并从解释器或其他脚本中导入它。

# commands.py

def foo(params): ...
def bar(params): ...
#!/usr/bin/env python
# interpreter; use it as a shell command / REPL.

import commands

class Shell(cmd.Cmd):
  def do_foo(self, params):
    return commands.foo(params)
  # etc
# another-script.py; use it to run complex custom logic.

import commands

def someLogic(x):
  if x > 1:
    commands.foo(x)
  else:
    commands.bar(x + 100)

在您进一步解释您正在解决的真正问题是什么之前,仍然很难说出哪种解决方案有帮助。

【讨论】:

    最近更新 更多