文章背景

  家里的第一台电脑是在2006年夏天买的,10年上大学之后基本上就没人用,过没两年就当二手卖给一个熟人。

  弟弟小我10岁,今年刚上初一。他在我毕业前半年就整天用妈妈的手机发短信给我,问我什么时候把学校里的台式机寄回家给他用。虽然从小就一直因为玩电脑的问题跟爸妈时不时有点小别扭,可是我还是非常鼓励弟弟接触电脑和网络的。可能有人会说小孩子就只会玩游戏,玩游戏怎么了?小孩子的天性不就是玩嘛,在娱乐的过程中其实是可以潜移默化地学会许多计算机日常使用的知识,还可以通过互联网跟已经认识、尚未认识的朋友进行沟通交流,好处多多的是。

  然而,凡事都得有个度。初中生不可能像我们成年人一样懂得克制自己(且不说很多大人都会沉迷在这个虚拟世界里),我就萌生了写一个程序限制弟弟平日玩电脑时间的想法。

技术选型

  其实我的第一想法是用Java,因为平时用的最多的就是它,而且除了C++之外就没有再用过别的语言。

  程序的基本思路

  1. 用一个txt文件记录电脑的一天内累计使用时间
  2. 累计使用时间超过若干小时就会自动关机
  3. 程序开机自动运行

  为什么我最后选择了python

  想着怎么写、搜资料的时候就发现Java并不适合,虽然不是不能实现,但有好几个问题解决起来都有点麻烦。对我这么一个“懒”程序员来说,已经构成了“弃用”的充分理由。就举一个简单的例子好了,最后会使用系统的关机命令实现自动关机这个功能,用Java+运行windows命令搜出来一大堆东西,看着就头疼。毕竟是业余时间玩玩,没必要这么耗脑子。

  可是用python就只需要用到两行代码!

 #关机命令
cmd="cmd.exe /k shutdown -s -t 0"; #执行关机命令
os.system(cmd)

动手写代码

  在网上一通乱搜之后,很快就把测试用的代码给写出来了。

 #! /usr/bin/env python

 #coding=utf-8

 import os
import time
import datetime #根据是否工作日设置限制时间
if datetime.date.today().weekday()<5:
timeLimit = 20
else:
timeLimit = 40 #读取文本中记录的日期
f = open('E:\\thefile.txt','r+')
f_date = f.readline()
f.close #读取系统日期,并与文本日期进行比对
#如果不相等,则清空文件,进行当日初始化
n_date = time.strftime("%d/%m/%Y")+"\n"
if f_date != n_date:
print("sucessed")
f = open('E:\\thefile.txt','r+')
f.truncate()
f.close
f = open('E:\\thefile.txt','r+')
f.write((n_date))
run_time=""
f.write(run_time)
f.close #死循环语句,当且仅当运行时间大于等于限制时间时跳出循环
while 2 > 1 :
f = open('E:\\thefile.txt','r+')
f_date = f.readline()
run_time = f.readline()
run = int(run_time)
print(run)
time.sleep(2)
if run<timeLimit:
run = run + 1
f.truncate()
f.close
f = open('E:\\thefile.txt','r+')
f.write(f_date)
run_time = str(run)
f.write(run_time)
f.close
else:
break #关机命令
cmd="cmd.exe /k shutdown -s -t 0"; print(cmd)

  为了方便大家理解程序,再把txt文件中的内容贴出来以供参考

01/10/2014
20

  需要特别提出的几个点

  第一,因为需要实现开机自启动,所以要把python文件复制到系统的“启动”文件夹里。

  第二,由于.py文件启动后会有控制台界面出现,非常影响使用效果,因此要把.py文件的后缀改成.pyw。

  第三,不需要担心如果自己想要用电脑的话会受到这个限制,只要在开机六分钟内把python进程关掉即可。

最后的成果

  忙活了一会,终于把实际使用的代码写完。

 #! /usr/bin/env python

 #coding=utf-8

 import os
import time
import datetime #根据是否工作日设置限制时间
if datetime.date.today().weekday()<5:
timeLimit = 20
else:
timeLimit = 40 #读取文本中记录的日期
f = open('E:\\thefile.txt','r+')
f_date = f.readline()
f.close #读取系统日期,并与文本日期进行比对
#如果不相等,则清空文件,进行当日初始化
n_date = time.strftime("%d/%m/%Y")+"\n"
if f_date != n_date:
print("sucessed")
f = open('E:\\thefile.txt','r+')
f.truncate()
f.close
f = open('E:\\thefile.txt','r+')
f.write((n_date))
run_time=""
f.write(run_time)
f.close #死循环语句,当且仅当运行时间大于等于限制时间时跳出循环
while 2 > 1 :
f = open('E:\\thefile.txt','r+')
f_date = f.readline()
run_time = f.readline()
run = int(run_time)
time.sleep(360)
if run<timeLimit:
run = run + 1
f.truncate()
f.close
f = open('E:\\thefile.txt','r+')
f.write(f_date)
run_time = str(run)
f.write(run_time)
f.close
else:
break #关机命令
cmd="cmd.exe /k shutdown -s -t 0"; #执行关机命令
os.system(cmd)

  周一到周五,弟弟能用电脑的时间最多只能是两个小时;而周末,则是四个小时。

  感想

  1. 虽然这只是一个很简单的小程序,几乎可以说是毫无难度可言,但是起到的作用还是挺大的。因为我跟哥哥工作都不在家,平时都是妈妈管着弟弟,每次都要盯着他,不能让他玩电脑太长时间,有的时候要很大声地让他快点关机写作业。现在,只要大家商量好平时用电脑的时间,设定好参数就行。妈妈可以安心地做自己的事情,弟弟也可以心安理得地玩他想玩的游戏。(制定规则,以一种便捷和不容分辨的方式执行,而这种方式和途径就是减少摩擦的润滑剂)

  2. 平时工作都是用Java,业余时间用别的语言(例如python)玩玩是一个蛮有趣的做法。以兴趣和小作品作为驱动,说不定以后能成为你跳槽或者转型的凭借。

  3. 作为程序员,编程是我们的饭碗,同时也可以是我们改变生活、转变思路的工具,哪怕这种影响在别人看来微不足道。

PS:关于编程、关于在现实生活中的创意和需求,大家如果有什么有趣好玩的想法,非常欢迎在评论中留言一起分享。也可以关注我的微信公众号,“华工小y”继续交流。  

 

人生苦短,我用python——当我在玩python的时候我玩些什么的更多相关文章

  1. 自学Python的经验之谈,学好Python的捷径

    其实python非常适合初学者入门.相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易.自带的各种模块加上丰富的第三方模块,免去了很多“重复造轮子”的工作,可以更快地写出东西.配置开发环境也 ...

  2. python经典书记必读:Python编程快速上手 让繁琐工作自动化

    所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/69/ 来源:python黑洞网,专注 ...

  3. python开发_常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...

  4. 安装完Python之后,如何设置Python环境变量

    人生苦短,我用Python.最近有许多加群的萌新在咨询Python安装的事宜,Python安装问题不大,可以戳这篇文章:.本以为安装Python之后就可以万事大吉,高枕无忧了,往命令行中输入pytho ...

  5. windows下python IDE安装注意事项&Python安装及编辑器UliPad安装

    python下载地址: http://www.python.org/download/releases/2.7.6/ 我自己用的是ulipad  ,但是注意  ulipad和python的版本一定要配 ...

  6. Python语言基础01-初识Python

    本文收录在Python从入门到精通系列文章系列 1. Python简介 1.1 Python的历史 Python的创始人为吉多·范罗苏姆(荷兰语:Guido van Rossum) 1989年的圣诞节 ...

  7. 零基础Python入门(1)- python安装与预热

    大家好,我是jacky,很高兴跟大家分享<Python数据科学之金融行业实操>,今天带大家学习我们这门课的操作工具,就是Python,为什么选用Python来作为金融行业数据科学的工具呢? ...

  8. python入门灵魂5问--python学习路线,python教程,python学哪些,python怎么学,python学到什么程度

    一.python入门简介 对于刚接触python编程或者想学习python自动化的人来说,基本都会有以下python入门灵魂5问--python学习路线,python教程,python学哪些,pyth ...

  9. Python - 翻译Talk Python To Me (和我聊Python) 播客

    “和我聊Python”是一个美国的聊天播客,英文名Talk Python To Me,类似于喜马拉雅的音频课程节目,只不过这个主题是编程语言Python.该节目从2015年的节目到现在,已经超过256 ...

  10. 【python之路1】python安装与环境变量配置

    直接搜索 Python,进入官网,找到下载,根据个人电脑操作系统下载相应的软件.小编的是windows os .下载python-2.7.9.msi 安装包  双击安装程序,进入安装步骤.在安装过程中 ...

随机推荐

  1. Redis到底该如何利用(三)?

    上两篇受益匪浅,秉着趁热打铁,不挖到最深不罢休的精神,我决定追加这篇.上一篇里最后我有提到实现分级缓存管理应该是个可行的方案,因此今天特别实践了一下.不过缓存分级之后也发现了一些问题,例如下图: 当a ...

  2. C语言语法 typedef小结

    在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...

  3. Linux init

    -bash: netstat: command not found #pacman -S net-tools

  4. TOP 和 OFFSET 筛选(转)

    SQL Server 对行数的排序提供了 TOP 筛选.SQL Server 2012 新增了 OFFSET 筛选. 一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回 ...

  5. JAVA 引入 junit工具框架

    我遇到的麻烦 : 开始直接按照视频上的来做,直接也是引入的他上面的jar ,但是我只引入了一个,就是上面的junit-4.4.jar,然后就会报错,会出现,空指针的错误, 后面我又按照网上的教程 这里 ...

  6. Shell_3 函数

    1 函数 函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. 函数返回值,可以显式增加r ...

  7. silverlight使用小计(先做记录后续整理)

    1.Grid: a.通过获取指定行的高度和指定列的宽度来获取指定单元格的宽高 b.几种宽高默认值: 宽高(Width/Heigth):1* 最大宽高(MaxWidth/MaxHeigth):正无穷大 ...

  8. js 实现表格的可编辑状态

    实现表格的可编辑,点击修改以后可以编辑,代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf ...

  9. c#比较两个List相等

    1.if(ListA.Count == ListB.Count && ListA.Count(t => !ListB.Contains(c)) == 0) 数量相等,元素值相等即 ...

  10. 【第一课】WEBIX 入门自学-介绍WEBIX

    Webix是跨浏览器.跨平台的JavaScript框架,使用JavaScript.CSS,HTML5技术构建交互式web应用程序.库中提供几十个完全可定制的组件,提供了JQuery集成和可以处理任何服 ...