Запустить терминал в человечности со сценарием Python?

Как я могу запустить терминал в Ubuntu 16.04 со сценарием Python, выполните команды на том терминале и получите вывод от тех команд?

Например, я хочу проверить содержание папки (через CLI) и возвратить результаты сценарию Python. Так, я хочу, чтобы мой код Python сделал это:

  1. Открытый терминал
  2. cd <path/to/folder>
  3. ls
  4. //Получите вывод и обработайте эту информацию.

Действительно ли возможно выполнить команды CLI и слушать результаты (потому что, следующая команда основана на выводе предыдущей команды), не открывая терминал?

0
задан 21 June 2016 в 19:29

3 ответа

При реальной необходимости в терминале Вы, вероятно, оказываетесь перед необходимостью пытаться получить имущество и соединять stdin и stdout к нему, затем использовать модуль Подпроцесса для запуска приложения. Даже это не отфильтрует escape-последовательностей проклятий или графики ASCII (почему еще Вам был бы нужен терминал?), но если бы приложение проверяет на присутствие терминала, это работало бы.

, Если все необходимо сделать, запущен приложение командной строки, и перенаправьте его ввод и вывод, просто используйте модуль Подпроцесса непосредственно.

1
ответ дан 29 September 2019 в 01:52

Можно сделать это использование 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 . Обратите внимание, что методы в модуле являются портативными через различные Ose, таким образом, можно на самом деле использовать сценарий вне Ubuntu.

1
ответ дан 29 September 2019 в 01:52
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

1
ответ дан 10 October 2019 в 16:10

Другие вопросы по тегам:

Похожие вопросы: