Как я могу использовать Python для взаимодействия с терминалом Ubuntu для Windows 10? - PullRequest
0 голосов
/ 20 июня 2019

Я запускаю скомпилированный код c в подсистеме Ubuntu для Windows. Я хотел бы автоматизировать этот процесс с помощью скрипта Python, который может открывать терминал, отправлять и читать команды, а также закрывать окно.

Я пытаюсь сделать это на Python 3.6 в Windows 10. Я думал, что это будет то же самое, что и интерфейс Python с CMD, но все, что я пробую, не дает результатов. Я хочу знать, пытался ли кто-нибудь автоматизировать процессы с помощью подсистемы Ubuntu для Windows и как этого добиться. Сначала мне нужно было найти .exe, который запускает приложение Ubuntu, так как оно загружено из магазина Microsoft.

Использование ОС просто дает мне следующий результат без открытия терминала.

import os
os.system(r"C:\Program Files\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_1804.2019.521.0_x64__79rhkp1fndgsc\Ubuntu.exe")

1

Также использование подпроцесса откроет терминал. Но расставаясь оттуда, как я могу дать ему команды и прочитать результаты?

import subprocess
subprocess.Popen([r"C:\Program Files\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_1804.2019.521.0_x64__79rhkp1fndgsc\Ubuntu.exe"])

1 Ответ

0 голосов
/ 20 июня 2019

Я думаю, что здесь стоит упомянуть несколько вещей.

Во-первых, я не думаю, что вам вообще нужно использовать Python.Если вы хотите запланировать запуск своего скомпилированного кода C в определенное время (или связанного с каким-либо другим условием и т. Д.), Вы можете сделать все это в WSL.Я бы предложил использовать cron, который уже поставляется с Ubuntu.Это демон планирования, который может выполнять задачи с заданными интервалами.

Во-вторых, если вы хотите или должны использовать Python для достижения этой цели (по любой причине), я предлагаю вам установить вторую версию Python в WSL.Это позволит вам легко запускать любые команды оболочки, которые вы хотите, например, для выполнения вашего скомпилированного кода C.Вам не нужно беспокоиться об открытии окна Ubuntu, а затем о его закрытии и т. Д. Лично я бы пошел дальше и сказал, что вы должны отказаться от своего Windows 10 Python и просто пойти с WSL Python - это делает многие вещи намного прощеособенно если вы уже знакомы с Linux или в любом случае используете WSL для других задач.

Наконец, если вам все еще нужно автоматизировать это с Windows 10, я предлагаю вам использовать планировщик задач Windows, чтобызапланировать .bat файл, который открывает bash (WSL) и выполняет команду по следующей ссылке:

Как запустить программу (ubuntu bash windows 10) из планировщика задач Windows

(или если вам не нужно планировать это, вместо этого вы можете просто выполнить команду из Python)

Надеюсь, это поможет!

...