我正在编写一个程序,该程序将测试事件的网络连接,然后运行我们的软件下载程序(如果有)。如果下载器中有可供下载的更新,它将自动下载并安装所述更新。
import urllib3
from subprocess import Popen
import subprocess
def run_downloader():
return subprocess.Popen(['C:\ProgramFiles\PrecisionOSTech\Education\POSTdownloader.exe'])
def internet_on():
if urllib3.urlopen('http://216.58.192.142', timeout=1):
return True
else:
urllib3.URLError
return False
if internet_on == True:
run_downloader()
期望让程序测试事件连接并返回 true 或 false。如果为真,那么它应该运行下载程序。
目前,程序运行没有错误,但完成后不会运行下载程序。我只能想象 internet_on(): 方法没有像我想要的那样返回 true。如果我在方法之外运行 subprocess.Popen 行,下载程序将按计划启动。
感谢任何帮助!
谢谢
最佳答案
应该是这样的:
import urllib.request
from subprocess import Popen
import subprocess
def run_downloader():
return subprocess.Popen(['C:\ProgramFiles\PrecisionOSTech\Education\POSTdownloader.exe'])
def ispageresponding():
response_status_code = urllib.request.urlopen("http://www.stackoverflow.com").getcode()
return response_status_code == 200:
if __name__ == '__main__':
if ispageresponding() == True:
run_downloader()
请注意,互联网连接函数是在 if 语句中调用的,而不是在同一函数内。另外,如果您使用 python3,您应该使用 urllib.request lib。
关于python - 检查网络连接并根据结果运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382347/