所以我有这个超级脚本,它不断检查程序的系统路径(openvpn
)。当您安装 openvpn 时,它会将自身添加到系统路径中。我在控制台中运行我的脚本,在它运行和检查时,我安装了 openvpn。在那个控制台中,我的脚本永远不会在 sys 路径中找到 openvpn。如果我打开一个新控制台并运行相同的脚本,它会找到它。
知道如何使我的脚本不那么愚蠢吗?
import os
import time
import subprocess
def cmd( command ):
return subprocess.check_output( command, shell = True )
def program_in_path( program ):
path = cmd( "path" ).split(";")
for p in path:
if "openvpn" in p.lower():
return True
return False
if __name__ == '__main__':
while True:
print program_in_path("openvpn")
time.sleep( 2 )
我认为它来自事物,但如果不使用or shell = True
,我还能如何找到它?我得到了没有 sehll 的运行path
WHERE openvpn /Q
WindowsError: [Error 2] The system cannot find the file specified
下面是用 ruby 完成的程序,它 100% 运行:
loop do
puts system( "WHERE openvpn /Q" )
sleep( 5 )
end
不幸的是,我的项目对 python 太深了,现在无法切换语言。太糟糕了。