"OS.system('exit')在我的代码中没有按预期工作"

2024-05-18 10:09:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试安装node.js,然后使用appium -v检查appium版本

import os,subprocess
os.system('node.msi')
os.system('exit')
os.system('appium -v')

node.msi是我计算机上的一个节点文件。当我通过cmd执行时,appium -v在新cmd中执行时有效,但如果我继续使用同一个cmd,则无效。所以我希望退出后,我的代码应该能正常工作。有人能指出我做错了什么吗


Tags: 文件代码import版本cmdnode节点os
2条回答

我假设你在这里运行Windows。当控制台启动时,它从注册表读取其环境。这就解释了为什么当你打开第二个cmd控制台时它会工作

这意味着您必须要求Python在一个新控制台中启动命令appium - v(而不仅仅是一个新的cmd.exeshell)

可以通过os.system使用start来完成:

os.system("start /W appium -v")

或者取决于什么是真正的appium

os.system("start /W cmd /c appium -v")

您还可以直接使用subprocess模块(它提供了比os.system更多的配置)

p = subprocess.Popen("cmd / c appium -v", creationflags=subprocess.CREATE_NEW_CONSOLE)
p.wait()

根据appium是什么,以下内容就足够了:

p = subprocess.Popen("appium -v", creationflags=subprocess.CREATE_NEW_CONSOLE)
p.wait()

很可能,node.msi的安装修改了系统的PATH变量。在运行的Python进程中,不会看到此更改

如果知道节点安装的路径,可以在调用中显式指定它,例如

subprocess.run([r'C:\node\bin\apium.exe', '-v'])

相关问题 更多 >