文章背景
家裡的第一臺電腦是在2006年夏天買的,10年上大學之後基本上就沒人用,過沒兩年就當二手賣給一個熟人。
弟弟小我10歲,今年剛上初一。他在我畢業前半年就整天用媽媽的手機發簡訊給我,問我什麼時候把學校裡的桌上型電腦寄回家給他用。雖然從小就一直因為玩電腦的問題跟爸媽時不時有點小別扭,可是我還是非常鼓勵弟弟接觸電腦和網路的。可能有人會說小孩子就只會玩遊戲,玩遊戲怎麼了?小孩子的天性不就是玩嘛,在娛樂的過程中其實是可以潛移默化地學會許多計算機日常使用的知識,還可以透過網際網路跟已經認識、尚未認識的朋友進行溝通交流,好處多多的是。
然而,凡事都得有個度。初中生不可能像我們成年人一樣懂得剋制自己(且不說很多大人都會沉迷在這個虛擬世界裡),我就萌生了寫一個程式限制弟弟平日玩電腦時間的想法。
技術選型
其實我的第一想法是用Java,因為平時用的最多的就是它,而且除了C++之外就沒有再用過別的語言。
程式的基本思路
用一個txt檔案記錄電腦的一天內累計使用時間
累計使用時間超過若干小時就會自動關機
程式開機自動執行
為什麼我最後選擇了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="0" 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) #設定五分鐘休眠,兩個作用:1.避免頻繁讀寫 2.第二次開機後可以避免頻繁關機 time.sleep(300) 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)
為了方便大家理解程式,再把txt檔案中的內容貼出來以供參考
01/10/2014 20
需要特別提出的幾個點
第一,因為需要實現開機自啟動,所以要把python檔案複製到系統的“啟動”資料夾裡。
第二,由於.py檔案啟動後會有控制檯介面出現,非常影響使用效果,因此要把.py檔案的字尾改成.pyw。
第三,不需要擔心如果自己想要用電腦的話會受到這個限制,只要在開機5分鐘內把python程式關掉即可(上面程式碼的time.sleep(300))。
週一到週五,弟弟能用電腦的時間最多隻能是兩個小時;而週末,則是四個小時。
感想
1.雖然這只是一個很簡單的小程式,幾乎可以說是毫無難度可言,但是起到的作用還是挺大的。因為我跟哥哥工作都不在家,平時都是媽媽管著弟弟,每次都要盯著他,不能讓他玩電腦太長時間,有的時候要很大聲地讓他快點關機寫作業。現在,只要大家商量好平時用電腦的時間,設定好引數就行。媽媽可以安心地做自己的事情,弟弟也可以心安理得地玩他想玩的遊戲。(制定規則,以一種便捷和不容分辨的方式執行,而這種方式和途徑就是減少摩擦的潤滑劑)
2. 平時工作都是用Java,業餘時間用別的語言(例如python)玩玩是一個蠻有趣的做法。以興趣和小作品作為驅動,說不定以後能成為你跳槽或者轉型的憑藉。
3. 作為程式設計師,程式設計是我們的飯碗,同時也可以是我們改變生活、轉變思路的工具,哪怕這種影響在別人看來微不足道。
文章轉自:http://www.cnblogs.com/levenyes/p/4003681.html