基于python的有趣(有用)脚本 Part.1

来源:互联网 发布:软件测试的薪资 编辑:程序博客网 时间:2024/05/21 20:44

基于python的有趣(有用)脚本 Part.1


1、动机

    因为近期月饼事件比较火,所以也想写一些有意思的脚本。一方面防止编程技术生疏,一方面也是为生活增添乐趣。
    这回写的第一部分,是想实现一个更方便的计算器。有多方便呢?只要把要计算的式子”复制“一下,再”粘贴“出来就行。
  
    
  
    

2.实现

import win32clipboard as wimport win32conimport reimport numpy as npimport timedef eval_filter(s):  s = re.sub(r'\s','',s) # remove blank and \n  s = re.sub(r'\[','(',s)  s = re.sub(r'\]',')',s)  s = re.sub(r'log[.0-9]+',lambda match:'np.log2('+str(float(match.group()[4:]))+')',s)    s = re.sub(r'ln[.0-9]+',lambda match:'np.log('+str(float(match.group()[4:]))+')',s)    s = re.sub(r'log\(','np.log2(',s)    s = re.sub(r'ln\(','np.log(',s)    return s  print 'start'while 1:  time.sleep(0.5)  w.OpenClipboard()  s = w.GetClipboardData(win32con.CF_TEXT)  w.CloseClipboard()  if len(s)<5 :     continue  s = eval_filter(s)  try:    print s    res = eval(s)    print res    w.OpenClipboard()    w.EmptyClipboard()    w.SetClipboardText(str(res))    w.CloseClipboard()  except Exception,e:    print 'fail'

    这段代码要用到的是numpy和win32库,所以只能运行在windows系统上。
    首先从剪切板中读取信息,然后用正则表达式把其中的运算(如log、ln)换成对应的numpy函数(如np.log2,np.log),随后调用eval函数做计算,最后写回到剪切板中。

    虽然只是一个很简单的程序,但是我觉得自己收获很大:对于程序输入的方式的扩展。
    之前用内存数据库redis作为爬虫的数据中转时也有这种感觉,计算中的数据流以数据库作为节点,数据库的扩展性就是程序的扩展性。我可以用python下载数据,用scala或者其它什么处理数据,只有都支持redis这个数据库,则数据的分发是轻易而自然的。
    最近也在试用单片机arduino。作为和python一样易于敏捷开发,原型设计的开源硬件系统,arduino让我感到非常惊艳。因为可以通过python试用串口和硬件直接交互,这是一个很刺激的想法。


0 0
原创粉丝点击