我正在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"])
答案 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执行命令)
希望有帮助!