栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

采用 python 编写时间同步小工具,并发布exe

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

采用 python 编写时间同步小工具,并发布exe

1 采用 python 编写脚本 times.py

times.py

# -*- coding:utf-8 -*-
# 1.获取网络时间
# 2.修改系统时间
import http.client
import time
import os,sys
import ntplib
import win32api

'''
'同步时间类
'''
class syctimes():
    def __init__(self):
        if sys.argv.__len__() == 1:
            try:
                time_list = self.getTime1()
                self.setTime1(time_list)
            except:
                time_list = self.getTime2('www.baidu.com')
                self.setTime2(time_list)
        for arg in sys.argv:
            if arg == '-1':
                time_list = self.getTime1()
                self.setTime1(time_list)
            if arg == '-2':
                time_list = self.getTime2('www.baidu.com')
                self.setTime2(time_list)

        sys.exit()

    def getTime1(self):
        c = ntplib.NTPClient()
        response = c.request('pool.ntp.org')  # 授时中心的网址
        ts_stamp = response.tx_time
        ts = time.localtime(ts_stamp)
        ttime = time.localtime(time.mktime(ts) + 8 * 60 * 60)  # +东八区
        return ts

    def getTime2(self,url):
        conn = http.client.HTTPConnection(url)
        conn.request("GET", "/")
        r = conn.getresponse()
        # r.getheaders() #获取所有的http头
        ts = r.getheader('date')  # 获取http头date部分
        # 将GMT时间转换成北京时间
        ltime = time.strptime(ts[5:25], "%d %b %Y %H:%M:%S")  # 格式ts
        ttime = time.localtime(time.mktime(ltime) + 8 * 60 * 60)  # +东八区
        dat = "date %u-%02u-%02u" % (ttime.tm_year, ttime.tm_mon, ttime.tm_mday)
        tm = "time %02u:%02u:%02u" % (ttime.tm_hour, ttime.tm_min, ttime.tm_sec)
        return [dat, tm]

    '''
    修改时间1
    '''
    def setTime1(self,time_cls):
        ttime = time.localtime(time.mktime(time_cls) - 8 * 60 * 60)  # 本为东八区,却set后多出8小时 UTC多了8个小时 , 所以……
        time_cls = ttime
        win32api.SetSystemTime(time_cls.tm_year, time_cls.tm_mon, time_cls.tm_wday, time_cls.tm_mday, time_cls.tm_hour, time_cls.tm_min, time_cls.tm_sec, 0)

    '''
    修改时间2
    '''
    def setTime2(self,time):
        os.system(time[0])
        os.system(time[1])



if __name__ == "__main__":
    classSyc = syctimes()
    # 方法1:
    #time_list = classSyc.getTime1()
    #classSyc.setTime1(time_list)

    # 方法2:
    # time_list = classSyc.getTime2('www.baidu.com')
    # classSyc.setTime2(time_list)
2 打包代码为exe 2.1 安装pyinstaller

安装指令:

pip install pyinstaller
2.2 cmd 切换到打包python脚本 times.py 目录 2.3 打包文件
pyinstaller -F times.py

子目录 dist 会生成一个 times.exe 文件

发布到服务器上

添加到定时任务,可根据喜好设置参数 -1 或 -2,切换同步方式

参考

1、python windows时间同步工具
2、python3项目打包成exe可执行程序

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号