【发布时间】:2015-02-03 06:18:18
【问题描述】:
我刚开始使用 Python,也没有任何其他编程语言的经验。提前感谢您帮助我。
我正在寻找打开终端并运行类似“ls -a”的命令并在终端中显示输出,这要借助我在 IDLE 中运行的 python 脚本。我在其中尝试了几个选项,命令正在运行,但我看不到输出。
请帮帮我。
【问题讨论】:
标签: python-3.x terminal ubuntu-14.04
我刚开始使用 Python,也没有任何其他编程语言的经验。提前感谢您帮助我。
我正在寻找打开终端并运行类似“ls -a”的命令并在终端中显示输出,这要借助我在 IDLE 中运行的 python 脚本。我在其中尝试了几个选项,命令正在运行,但我看不到输出。
请帮帮我。
【问题讨论】:
标签: python-3.x terminal ubuntu-14.04
要按照您的要求进行操作,请使用 subprocess.Popen 打开 shell 并运行命令。这是 Windows 的等价物,有两个选项可以做同样的事情。
import subprocess as sub
sub.Popen('cmd /K dir')
sub.Popen(['cmd', '/K', 'dir'])
我相信列表形式更适合*nix。 'cmd' 将是 'sh' 或任何适合你的东西。 '/K' 表示'运行以下命令并保持打开状态。
但是,不清楚为什么要在新的 shell 窗口而不是 Python 已经在其中运行的窗口中输出。另请注意,Idle 通常用于开发程序而不是运行它们。
如果您编辑了您的问题以显示您尝试了什么并解释发生了什么以及结果不令人满意的原因,您可能会得到更好的答案。
【讨论】:
for arg in args:
pro = subprocess.Popen(['new_shell', arg],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
inpt = <script_to_be_run_in_shell> + <arguments> +'\n'
out, err = pro.communicate(inpt.encode())
【讨论】: