基于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试用串口和硬件直接交互,这是一个很刺激的想法。
相关文章推荐
- [Python]基于Splinter的自动化回归/测试脚本
- [Python]基于Splinter的自动化回归/测试脚本
- Linux上用于Json数据处理并导入Mysql的几个有用Python脚本
- python-day0003-搭建基于python的selenium自动化测试---第一个简单的测试脚本
- 基于python一个分发小脚本
- 用Python脚本语言建立一个基于应用程序的GUI快速启动
- 使用python脚本实现基于指定字符串的文本排序
- 基于七牛Python SDK写的一个同步脚本
- 基于python实现的改变HTML、txt文件编码脚本
- 基于python3的手机号生成脚本
- apache-tomcat-6.0.36配置基于Python的CGI脚本解析
- linux下三个有用的 Python 脚本
- C++嵌套调用 用Python 脚本写的 基于Gurobi 的解数学模型的经验记录
- 基于七牛Python SDK写的一个同步脚本
- 用Python编写一个基于终端的实现翻译的脚本
- [python]基于BeautifulSoup解析百度贴吧water_maker(谁最水)的脚本,练手打趣之作[更新0.3]
- 使用Python脚本示例10之Part二:设置street宽度
- python里那些有趣有用又低调的特性
- 基于Python SimpleHTTPServer.py的修改脚本:HTTP文件服务器,修正中文目录列表,支持视频文件在线播放
- 基于时间延迟的Python验证脚本