如果exe与.py脚本位于同一目录中,则subprocess.Popen的行为会有所不同

时间:2017-08-29 17:36:27

标签: python

如果我运行我的脚本,' test.py'在silent_install文件夹所在的同一目录中(c:\ users \ test_user \ desktop \ dist),程序的行为与使用该目录外的silent_install文件夹运行它的行为不同。如果我像这样运行它,程序将保持循环而不会完成。

    #test.py

    def proc_check(proc):
        exists = []
        for p in psutil.process_iter():
            if p.name() == proc:
                exists.append(p)
        if not exists:
            return False
        return True

    #uninstall program silently (doesn't work)
    while os.path.exists(r"c:\program files\foobar"):    
        subprocess.Popen([r"c:\users\test_user\desktop\dist\silent_install\setup.exe",
                         "/s",
                         "/f1c:\\users\\test_user\\desktop\\dist\\silent_install\\uninstall.iss"])

        #check if setup is running before continuing
        while True:
            if proc_check("setup.exe") == False:
                break

但是,如果我以这种方式运行它(使用在c:\ users \ test_user \ desktop \ dist之外的silent_install文件夹),程序的行为方式与我想要的一样,静默卸载程序实际上可以正常工作。

#uninstall program silently (works like this)
while os.path.exists(r"c:\program files\foobar"):    
    subprocess.Popen([r"c:\users\test_user\desktop\silent_install\setup.exe",
                     "/s",
                     "/f1c:\\users\\test_user\\desktop\\silent_install\\uninstall.iss"])`

有谁知道为什么要这样做?

0 个答案:

没有答案