这个title挺大,不过好在只是发在自己博客上,说说也无妨。是我最近使用python开发的一些心得。
从最早接触boo——一种类python语法的类python动态脚本,依附.net平台,更直白点类似IronPython,大家主要用它来做为模板语言嵌于Castle框架中。
到现在已经有一年半的时间了。这期间用python写脚本越来越频繁,有一些心得体会。
原先只是写点很小很小的片段,最近的两个月,用python用得特别频繁,主要和我在做data mining有关,这期间,我有两次失败的写python脚本的经历与大家分享。
第一次是想写一个递归检查某个文件夹下,是否有重复的文件,作这个工作的软件很多,我google过,发现都太复杂了,搞得我都不会用,终于一天,由于我的硬盘实在是没有空间了,加上我还想腾出空间来装ubuntu,于是决定动手写这么个脚本。
我当时的思路时,判断文件的大小,是否一致,先把重复的文件分组显示出来提示你,之后再点y进行删除,这里面的核心是我用了一个reduce函数,来将一个文件和其它所有的文件进行比较,看看两两是否大小一致,如果一致就将它归为一组。这个思路没什么大问题,但在细节处理上,可能有些疏忽,总拿不出正确的结果,结果这时同事说了,可以用md5的方式来进行校验,我一想心就凉了,我走了弯路,不过我想,我都写到这个份上了(已经写了将近100行代码了,我不愿意放弃重来),还是继续写,把bug找出来,顶多以后这段代码不能复用了,这次用完就扔了,结果后面我折腾了两个小时,搞得筋疲力尽还是没有成功,到晚上8点多,只好下班回去了,很是郁闷。
这件事情是由于我没有果断的放弃前面将近一个小时写的代码,而再搭上了后面两个小时企图去找出bug,结果还是没有找出来。
隔天,我还是使用md5的方法,不到半个小时把问题解决了。
总结一下我觉得有几点启示:
有没有其它的解决方案?
把这个问题抛给别人,看别人是怎么想的?
做一些计划,接下来我准备投入多少时间到这个脚本的编写上,如果到时间还没完成,那我下一步的策略是如何?
潜在的风险在哪一块上
如何将脚本良好的分解和划分,
大致分多少个步骤来实施等等
另外一次失败的经历是发生在今天,一个脚本足足写了半天,最后,真正从绝径中走出来,仅花了二十分钟,起因是这样的:
利用sqlserver的多表关联来构建高维矩阵,因为sqlserver每一张表最多是1024列,所以我需要一个小脚本,每1000维划分在一种表内,因此我要生成这样一个创建多个表创建的sql脚本的python脚本。
之前做了一个简单的原型是直接读出所有维数,存在一个表中的py脚本,于是我就想在此基础上复制了一份脚本,进行局布的修改,这样虽然有一些冗余代码,但是也能适合我的需求了。
脚本修改的比较随兴(我还是有些注意的),但是在一些细节上调试总是调不对,而且python在调试方面,也挺麻烦,基本上我是打print的形式。
结果调试了很久还是没有成功,最后我决定,将最复杂的那段进行重定,使用最传统,我最熟悉的方式去写,结果没多久就搞定了。
这次给我的启示是:
Step1()
Step2()
Step3()
我觉得可以用一个字来形容编写代码——织
表明你是在注入心力在编写程序。