您的位置:首页 > 编程语言 > Python开发

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

2016-10-01 00:03 218 查看

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

1、动机

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


  
    


2.实现

import win32clipboard as w
import win32con
import re
import numpy as np
import time

def 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试用串口和硬件直接交互,这是一个很刺激的想法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: