os.sytem(' exit')在我的代码中没有按预期工作

时间:2018-03-08 06:50:53

标签: python operating-system

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

检查appium版本
import os,subprocess
os.system('node.msi')
os.system('exit')
os.system('appium -v')

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

2 个答案:

答案 0 :(得分:0)

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

如果您知道节点安装的路径,则可以在诸如

之类的调用中明确指定它
subprocess.run([r'C:\node\bin\apium.exe', '-v'])

答案 1 :(得分:0)

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

这意味着您必须要求Python在新控制台(而不仅仅是新的appium - v shell)中输入命令cmd.exe

可以使用os.system

通过start完成
os.system("start /W appium -v")

或取决于真正的appium

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

您也可以直接使用子进程模块(提供比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()