4月 23

python 代码规范 pep8

  学习了很久的python,基本都是功能是想,没有遵循过代码规范。当前想成正规军,所以学习一下代码规范。直接学习pep8规范。规范文档下载位置。
http://www.python.org/dev/peps/pep-0008/

  网上也有不少中文的简要代码规范,可以参考。个人也没有细看,准备实践中学习,所以使工具来辅助检查,检查工具下载位置。直接用easy_install安装比较方便。
http://pypi.python.org/pypi/pep8/

  用之前的彩票代码试试,很多毛病呀,如下图

  平时都用eclipse,所以还是装配置在eclipse上比较方便。当前eclipse已经支持了python,直接配置pep8。

  打开eclipse开始配置,Window->Preferences->PyDev->Editor->Code Analysis,打开pep8.py 的标签页选择waring,如下图。

  重启eclipse后看到有很多的叹号,把鼠标放上去能看到问题。开始慢慢学习了。

演示脚本位置:http://www.simonzhang.net/?p=976

4月 19

python开头不可见字符的处理

  今天要处理一个由程序生成的文本文件,但是开头总有乱码。通过查看文件使用utf-8编码。直接用二进制打印。

for i in open("file.txt","rb"):
    print i 

  得到的乱码是“\xef\xbb\xbf”,处理方法很简单,直接截掉就可以了。

#### \xef\xbb\xbf
if i[:3] == "\xEF\xBB\xBF" :
      i = i[3:]

  但是为什么会出现这个问题,到网上查了一下,是utf-8编码的BOM(Byte Order Mark)。UTF-8 BOM又叫UTF-8 签名,BOM对UFT-8没有用,主要为了支持UTF-16,UTF-32才加上。BOM就是方便编辑器识别。所以直接删掉也没有问题。

参考:
http://www.cnblogs.com/DDark/archive/2011/11/28/2266085.html

4月 17

python 使用资源不断收集中

安装使用:
easy_install安装升级工具,根据自己需要版本获取。有了这个很多东西都不需要了。
http://pypi.python.org/pypi/setuptools#downloads
wget -q http://peak.telecommunity.com/dist/ez_setup.py

开发环境搭建:
eclipse 环境集成安装
http://pydev.org/updates

开发框架:
py2exe
http://starship.python.net/crew/theller/py2e

windows下的摄像头获取
http://videocapture.sourceforge.net/

python转C并编译
http://cython.org/

学习:
watchdog
watchdog 用来监控文件系统事件的Python API和shell实用工具。

pattern
Pattern Web数据挖掘模块。可用于数据挖掘、自然语言处理、机器学习和网络分析

django-sentry
实时Django的异常记录,Django的异常记录到数据库处理程序。

excel操作
http://www.python-excel.org/

4月 08

python的聪明组合

  一直在买双色就是没有中过,看过高人指点,根据“聪明组合”写了这个脚本。在技术上没有任何难度,都是体力活。为了大家方便。
  运行脚本输入12个红球数,组合成10组。然后在自己加上篮球即可。

#!/bin/env python
# -*- coding:utf-8 -*-
# -------------------------------------------
# Filename:    clever12.py
# Revision:    1.0
# Date:        2012-3-13
# Author:      simonzhang
# WEB:         www.simonzhang.net
# Email:       simon-zzm@163.com
# -------------------------------------------

def run_group(di):
    fen = di.split(' ')
    A = fen[0]
    B = fen[1]
    C = fen[2]
    D = fen[3]
    E = fen[4]
    F = fen[5]
    G = fen[6]
    H = fen[7]
    I = fen[8]
    J = fen[9]
    K = fen[10]
    L = fen[11]
    print("%s %s %s %s %s %s"%(A,B,D,E,K,L))
    print("%s %s %s %s %s %s"%(A,B,E,F,H,I))
    print("%s %s %s %s %s %s"%(A,B,E,G,I,K))
    print("%s %s %s %s %s %s"%(A,B,E,I,J,L))
    print("%s %s %s %s %s %s"%(A,C,D,E,F,L))
    print("%s %s %s %s %s %s"%(A,C,D,G,H,J))
    print("%s %s %s %s %s %s"%(A,C,D,I,K,L))
    print("%s %s %s %s %s %s"%(A,C,F,G,H,L))
    print("%s %s %s %s %s %s"%(A,C,F,H,J,K))
    print("%s %s %s %s %s %s"%(A,D,F,G,J,L))

def main():
    get_list = raw_input("12 number :")
    if len(get_list) == 35:
        run_group(get_list)
    else:
        print "input error"

if __name__ == "__main__":
    main()
3月 29

shell 判断字符串长度

        需要循环输出一组序列,序列定义为双位数。所以开始的序列要判断一下字符长度。如果变量为h,计算字符串长度为“${#h}”。这个代码代码如下:

#!/bin/sh
for (( h=0 ; h<20 ;h++ ));do
   if (( ${#h} == 1 ));then
      echo '0'$h
   else
      echo $h
   fi
done

输出结果:
# sh 123.sh
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19