使用 python 脚本在 ubuntu 中启动终端?

使用 python 脚本在 ubuntu 中启动终端?

如何使用 python 脚本在 Ubuntu 16.04 中启动终端、在该终端上执行命令并检索这些命令的输出?

例如,我想检查文件夹的内容(通过 CLI)并将结果返回给 Python 脚本。因此,我希望我的 Python 代码执行以下操作:

  1. 打开终端
  2. cd <path/to/folder>
  3. ls
  4. //检索输出并处理该信息。

是否可以在不打开终端的情况下运行 CLI 命令并听取结果(因为下一个命令基于上一个命令的输出)?

答案1

如果您确实需要终端,则可能需要创建一个 pty 并将 stdin 和 stdout 连接到它,然后使用 Subprocess 模块运行您的应用程序。即使这样也不会过滤掉任何 curses 转义序列或 ASCII 图形(否则您为什么需要终端?)但如果应用程序正在检查终端是否存在,它就会起作用。

如果您需要做的只是运行命令行应用程序并重定向其输入和输出,只需直接使用 Subprocess 模块。

答案2

您可以使用该模块执行此操作os

#!/usr/bin/env python

import os
output = os.listdir('path_to_folder')  # output is a list
# Do whatever you want to output

您可以阅读以下文章了解该os模块的其他功能https://docs.python.org/3/library/os.html。请注意,模块中的方法可在不同的操作系统之间移植,因此您实际上可以在 Ubuntu 之外使用您的脚本。

答案3

import subprocess,shlex
command = 'ls -la'
workingdirectory = 'C:users/Account/Desktop'
try:
    process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE,
                                     stderr=subprocess.PIPE, shell=True, cwd=workingdirectory)

    stdout, stderr = process.communicate()

     if stderr.decode('utf-8') == "":
         print(stdout.decode('utf-8'))
     else:
         print(stderr.decode('utf-8'))

https://github.com/chefsoftwarehouse/CMD.py/blob/master/CMD.py

相关内容