【问题标题】:Open a terminal in Python script and execute terminal commands in that newly opened terminal在 Python 脚本中打开终端并在新打开的终端中执行终端命令
【发布时间】:2020-05-14 22:22:56
【问题描述】:

我需要创建一个 Python 脚本以在 Mac/Linux 中打开终端窗口,并且需要从 Python 脚本在终端中执行以下命令。

  1. 打开终端
  2. 执行命令 sudo openpyn --init""
  3. 它会提示我们输入密码和用户名 - 从 Python 脚本传递它

尝试了以下但它不起作用,请提供任何想法或建议。将有很大帮助。

from openpyn import openpyn
import subprocess
import os

subprocess.call(["sudo openpyn --init"], shell=True)
os.system("sudo openpyn --init")

但它没有给出任何结果或没有按预期工作。

【问题讨论】:

  • 注意,默认情况下sudo 会从 /dev/tty 读取密码,因为密码没有理由来自另一个程序...
  • 你没有启动终端,你启动了一个 shell。也许os.system("""osascript -e 'tell application "Terminal" to do script "echo hello"'""")
  • @MarkSetchell 非常感谢!! os.system("""osascript -e 'tell application "Terminal" to do script "echo hello"'""") 添加了这一行终端窗口正在弹出,但是当我尝试执行 os.sysstem 之类的终端命令时("""ls -l""") 没有结果知道我们该怎么做吗?
  • @SergeBallesta 我在想如果我们可以生成一个终端窗口并从 PYTHON 执行命令,是否可以从那里传递用户名和密码等凭据?
  • 你又做了同样的事情。您还没有启动终端,只是在没有终端的情况下运行ls

标签: python python-3.x linux macos


【解决方案1】:

我不完全理解你的问题的措辞,但如果你想弹出一个终端并运行:

ls -l 

在那个终端,你可以这样做:

import os
os.system("""osascript -e 'tell application "Terminal" to do script "ls -l"'""")

【讨论】:

  • 这是特定于 Mac 的。如果您在 Linux 上需要类似的东西,请尝试 xterm -e 'ls -l' & 或您想要生成的任何终端应用程序。
  • @MarkSetchall 如果你能回答这个问题那就太好了,如果我想在同一个终端窗口中执行多个终端命令怎么办?
  • ls -l 更改为 date; ls -l; pwd
猜你喜欢
  • 1970-01-01
  • 2021-12-09
  • 2015-11-04
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
相关资源
最近更新 更多