如何使用Python与Windows 10的Ubuntu终端进行交互?

时间:2019-06-20 19:47:33

标签: windows python-3.6 windows-subsystem-for-linux

我正在Windows的Ubuntu子系统上运行编译的C代码。我想使用可以打开终端,发送和读取命令以及关闭窗口的Python脚本自动化此过程。

我正在Windows 10中的Python 3.6上尝试此操作。我认为这将与将Python与CMD接口相同,但是我尝试的所有操作均未产生结果。我想知道是否有人尝试使用适用于Windows的Ubuntu子系统自动化进程,以及如何实现这一点。 首先,我必须找到启动Ubuntu应用程序的.exe,因为它是从microsoft商店下载的。

使用OS无需打开终端即可简单地得到以下结果。

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 :(得分:0)

我认为这里值得一提。

首先,我认为您根本不需要使用Python。如果要安排已编译的C代码在特定时间运行(或链接到其他条件等),则可以在WSL中完成所有这些操作。我建议使用Ubuntu随附的cron。这是一个调度守护程序,可以按指定的时间间隔执行任务。

第二,如果您想要或需要使用Python实现此目的(无论出于何种原因),建议您在WSL中安装第二个版本的Python。这将使您可以轻松运行所需的任何Shell命令,例如执行编译的C代码。您不必担心打开Ubuntu窗口然后再关闭它等问题。就我个人而言,我实际上会更进一步地说,您应该抛弃Windows 10 Python并使用WSL Python-它使很多事情变得更加容易,尤其是如果您已经熟悉Linux或无论如何都要使用WSL来完成其他任务。

最后,如果您仍然真的需要从Windows 10自动执行此操作,建议您使用Windows Task Scheduler来调度.bat文件,该文件将打开bash(WSL)并按照以下链接执行命令:

How to run program on ( ubuntu bash windows 10 ) from windows task scheduler

(或者,如果不需要安排它,您可以只从Python执行命令)

希望有帮助!