Python实现Windows定时关机脚本教程

纸上星河
纸上星河
发布时间:2026-10-13 | 3人浏览过
原创

本文介绍使用Python编写Windows定时关机脚本的方法。通过调用os和time模块,解析用户输入的时分格式,计算剩余秒数并执行shutdown命令。文中详细记录了开发过程中遇到的整数除法、数据类型转换及控制台乱码等常见错误及解决方案,适合Python初学者参考。

鉴于经常需要利用笔记本电脑共享WiFi热点,但为了践行低碳环保理念,不希望电脑整夜开机,每次手动使用DOS命令关机显得颇为繁琐。恰逢近期正在学习Python,便萌生了利用Python编写一个自动化定时关机脚本的想法。

鉴于代码逻辑相对简单,此处直接展示具体实现代码。

代码块

# -*- coding: utf-8 -*-
"""
Created on Sat Dec 19 11:18:16 2015
@author: win7
"""
'''定时关机'''
'''脚本功能:windows下,用户按照一定格式输入关机时间,系统到指定时间自动关闭
  思路:从用户输入获取指定时间 分别以时分秒减去当前时间 最终计算得到当前时间距离指定
  时间还有多少秒 作为关机命令的时间参数
'''
'''需要用到的模块:
        os 用于执行设定的系统命令
        time 用于获取系统时间
 需要用到的命令: shutdown -s -t xxx 其中xxx为距离自动关机所用秒数,即时间参数      
        shutdown -a 取消关机计划
'''
import os,time
#获取用户指定关机时间
print u'使用说明:输入关机时间,格式如:小时:分钟 举个栗子:20:21 然后敲回车 即可  
如果想取消定时关机 再次双击打开程序 输入 off 敲回车 即可'.encode('mbcs')
#u'xxx'.encode('mbcs') 使正文字符在控制台正确显示
input_time=raw_input(u'请输入关机时间,格式如:小时:分钟 :'.encode('mbcs'))
#取消定时关机
#计划总有变化 先留条后路
if input_time == 'off':
  os.system('shutdown -a')
#输入数据检查
#由于是自用 暂时略过
#提取时分秒
h1 = int(input_time[0:2])
m1 = int(input_time[3:5])
#print h1,m1#验证获取是否正确
#获取当前系统时间
mytime = time.strftime('%H:%M:%S')
h2 = int(mytime[0:2])
m2 = int(mytime[3:5])
#print h2,m2 #验证获取是否正确
#对用户输入数据进行整理 防止出现25:76:66这样的时间数据
if h1 > 24:
  h1 = 24
  m2 = 0
if m1 > 60:
  m1 = 60
if h1<h2:
  h1 = h1 + 24  
#计算秒数
s1=(h1+(m1/60.0)-h2-(m2/60.0))*3600
print '距离关机还有 %d 秒' %s1
os.system('shutdown -s -t %d' %s1 ) 

作者说明

由于刚开始接触Python不久,该脚本编写得较为简陋,部分功能尚未完善。例如,缺乏对输入数据的严格校验,数据处理方式也较为粗糙,存在诸多不足之处。恳请各位技术高手不吝赐教,提出改进建议。

脚本开发中遇到的问题

回顾开发过程,确实犯过不少低级错误。为了减少未来的尴尬,同时也为刚入门的开发者提供一份反面教材,特此将这些错误记录如下,供各位高手茶余饭后一笑置之。

1. 忽略了整数除以整数仍为整数的规则。在测试阶段,时间计算结果总是不准确,原因在于将分钟转换为小时时除以了整数60,导致结果出现偏差。直到逐一输出计算结果进行调试后才发现此问题,令人无奈。

2. 忽视了数据类型转换。raw_input()函数获取的数据类型为字符串,在测试时直接报错,事后才意识到需要进行类型转换,同样令人无语。

3. 最后是字符显示问题。脚本初版运行时,控制台输出出现乱码。后经搜索找到解决方法,即使用 u'xxx'.encode('mbcs') 对字符串进行编码处理,从而在控制台正确显示中文。

以上便是利用Python编写Windows定时关机脚本的详细介绍,希望能对各位有所帮助。如有任何疑问,欢迎留言,小编会及时回复。在此衷心感谢大家对本站的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表