Как я могу запустить терминал в Ubuntu 16.04 со сценарием Python, выполните команды на том терминале и получите вывод от тех команд?
Например, я хочу проверить содержание папки (через CLI) и возвратить результаты сценарию Python. Так, я хочу, чтобы мой код Python сделал это:
cd <path/to/folder>
ls
Действительно ли возможно выполнить команды CLI и слушать результаты (потому что, следующая команда основана на выводе предыдущей команды), не открывая терминал?
При реальной необходимости в терминале Вы, вероятно, оказываетесь перед необходимостью пытаться получить имущество и соединять stdin и stdout к нему, затем использовать модуль Подпроцесса для запуска приложения. Даже это не отфильтрует escape-последовательностей проклятий или графики ASCII (почему еще Вам был бы нужен терминал?), но если бы приложение проверяет на присутствие терминала, это работало бы.
, Если все необходимо сделать, запущен приложение командной строки, и перенаправьте его ввод и вывод, просто используйте модуль Подпроцесса непосредственно.
Можно сделать это использование 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.
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