Intelligence without ambition is a bird without wings.

2015-04-02
python-内建变量

  • __name__ 模块名,主模块为__main__

  • __doc__ 文档字符串

阅读此文

2015-04-02
AdBlock Plus规则语法

  • 规则

    正则表达式
    
  • 定义例外规则

    @@|规则
    

元素隐藏

不支持通配符,可在前面加上域名以达到只在某域名下工作

  • 根据标签类名

    ##div.textad
    
  • 根据标签ID

    ##div#sponsorad
    
  • 根据标签名

    ##textad
    

属性选择符

通过标签的属性来选择标签以屏蔽,例如##table[width="80%"]

可使用正则来匹配属性名

参考

  1. https://adblockplus.org/zh_CN/filters
阅读此文

2015-04-01
python-相对导入

  • 相对导入是基于当前模块的名称(__name__),其实就是. <=> __name__

  • 当一个模块作为主模块时,它的名称为__main__,所以在主模块中,不能使用相对导入!

  • 当一个模块不作为主模块时,也就是说被主模块引用,必须使用相对导入(因为模块的搜索)

#参考

  1. https://docs.python.org/2/tutorial/modules.html#intra-package-references
阅读此文

2015-04-01
python-获取主模块文件名

1
2
import __main__
print __main__.__file__

Note:

  • 交互式shell中执行时,__main__没有__file__属性

参考

  1. http://stackoverflow.com/questions/606561/how-to-get-filename-of-the-main-module-in-python
阅读此文

2015-04-01
python-安装脚本经常使用的API

  • 判断当前系统类型

    platform.system() == 'Windows'
    os.name == 'nt'
    
  • 获取安装绝对路径名(不带”..”)

    os.path.abspath(r'./setting.ini')
    
  • 获取脚本所在的目录

    os.path.dirname(os.path.realpath(__file__)
    
  • 获取用户配置完全路径名

    os.path.expanduser(r'~/_vimrc')
    
  • 目录不存在则创建(递归创建)

    if not os.path.exists(directory):
        os.makedirs(directory)
    
    os.makedirs(os.path.dirname(f[1]), exist_ok=True)
    
阅读此文

2015-04-01
python-pip设置第三方源

命令行指定

pip install -i http://pypi.douban.com/simple/ –trusted-host pypi.douban.com gevent

配置文件指定

  • win7

    ~/pip/pip.ini

    1
    2
    3
    4
    [global]
    index-url = http://pypi.douban.com/simple
    [install]
    trusted-host=pypi.douban.com
  • linux

    vi ~/.pip/pip.conf

    1
    2
    3
    4
    [global]
    index-url = http://pypi.douban.com/simple
    [install]
    trusted-host=pypi.douban.com

第三方源列表

阅读此文

2015-04-01
CGI环境变量列表

| 键 | 值 |
|——————-+—————————————————-|
| DOCUMENT_ROOT | http服务器根目录 |
| GATEWAY_INTERFACE | CGI版本 |
| HTTP_COOKIE | COOKIE值(若存在的话) |
| HTTP_HOST | 尝试获取的页面所在服务器的主机名 |
| HTTP_USER_AGENT | 客户端代理类型(浏览器类型) |
| QUERY_STRING | GET请求中的查询字符串 |
| REMOTE_ADDR | 客户端IP |
| REMOTE_HOST | 客户端主机名(需要开启reverse-name-lookup) |
| REMOTE_PORT | 客户端连接服务器的端口 |
| REQUEST_METHOD | 请求方法(GET,POST) |
| REQUEST_URI | URL中去除主机名的部分(相对于服务器的document root) |
| SCRIPT_FILENAME | 访问资源在服务器中的完全路径名 |
| SCRIPT_NAME | 访问资源的路径,URL中的路径部分 |
| SERVER_ADDR | 服务器IP |
| SERVER_ADMIN | 服务器管理员邮箱 |
| SERVER_NAME | 服务器域名 |
| SERVER_PORT | 服务器监听端口 |
| SERVER_PROTOCOL | 服务器http协议版本 |
| SERVER_SOFTWARE | 服务器软件名称 |

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
http://localhost/cgi-bin/debug/print_all?a

Environment
COMSPEC: C:\Windows\system32\cmd.exe
DOCUMENT_ROOT: E:/Work/Project/WifiClient/branches/br_ZSAC_v1.0.11_r565/src/httpd/www
GATEWAY_INTERFACE: CGI/1.1
HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
HTTP_ACCEPT_ENCODING: gzip, deflate, sdch
HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4
HTTP_CONNECTION: keep-alive
HTTP_COOKIE: CNZZDATA1253757582=110588724-1425953082-%7C1427333981
HTTP_DNT: 1
HTTP_HOST: localhost
HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
PATH: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools;C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\VCPackages;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;d:\Program Files (x86)\Git\cmd;E:\OS\Windows\lnk;E:\OS\Windows\bin;E:\Work\bin;E:\Soft\pandoc\bin\pandoc-1.12.4;D:\Program Files (x86)\Git\bin\;E:\Soft\cmake\bin\cmake-3.1.0-rc2-win32-x86\bin;E:\Soft\Doxygen\bin\doxygen-1.8.7\bin;E:\Soft\GraphViz\bin\graphviz-2.39.20140813\bin;C:\Python27-32\Scripts;E:\Soft\MinGW\bin\MinGW-w64-builds\x64-4.8.1-posix-seh-rev5\mingw64\bin;C:\Python27-32
PATHEXT: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.py;.lnk
QUERY_STRING: a
REMOTE_ADDR: 127.0.0.1
REMOTE_PORT: 50252
REQUEST_METHOD: GET
REQUEST_URI: /cgi-bin/debug/print_all?a
SCRIPT_FILENAME: E:/Work/Project/WifiClient/branches/br_ZSAC_v1.0.11_r565/src/httpd/cgi-bin/debug/print_all
SCRIPT_NAME: /cgi-bin/debug/print_all
SERVER_ADDR: 127.0.0.1
SERVER_ADMIN: [no address given]
SERVER_NAME: localhost
SERVER_PORT: 80
SERVER_PROTOCOL: HTTP/1.1
SERVER_SIGNATURE:
SERVER_SOFTWARE: Apache/2.2.25 (Win32)
SYSTEMROOT: C:\Windows
WINDIR: C:\Windows

参考

  1. http://www.cgi101.com/book/ch3/text.html
阅读此文

2015-03-31
python-from import VS import

from A.B.C import D

  • C之前的名字必须是包名

  • C必须是模块名

    不能是已定义的名字(变量,函数,类),如果这样的话,D没有意义

  • D名字导入进来,可以直接使用D.name访问

import A.B

  • 最后部分可以是包名,模块名,已定义名字

  • 需要使用A.B.name访问

参考

  1. https://docs.python.org/2/tutorial/modules.html#packages
阅读此文

2015-03-31
python-包

要点

  • 包是一种模块命名空间的组织方法,使用package.module方式来访问模块,用来避免模块名冲突

  • python语法上,包是带有__init__.py的目录

  • 使用from package import item导入

    item可以是已定义的名字,子模块或子包

使用

参考

  1. https://docs.python.org/2/tutorial/modules.html#packages
阅读此文

2015-03-31
python-模块

要点

  • 一个*.py文件即一个模块

  • 主模块,程序的入口模块

  • 文件名(不包括路径和拓展名)即模块名,可通过__name__得到,主模块名叫__main__

  • 模块是一种代码组织方式,具有方便开发,测试,维护,复用等优点

  • 模块中的符号表是私有的,意味着在模块当中的符号不会与其他模块冲突

  • 内建方法dir()查看模块名字

使用

module.py

1
2
3
4
var = 1

def func():
print("Hello world")

无污染方式(优先使用)

  • 导入模块

    import moudle
    
  • 访问模块中的符号(变量名,函数名)

    module.var
    module.func
    

污染方式(不推荐使用)

部分导入

  • 导入

    from module import var
    
  • 使用

    var
    

全部导入(不会导入单下划线_开头的符号)

  • 导入模块

    from module import *
    
  • 使用

    var
    func
    

模块搜索路径

  • 工作目录

  • sys.path(路径字符串列表)中的顺序搜索

标准模块(标准库)

  • 有些内建到解释器中

  • 有些依赖于平台,如win下的winreg

参考

  1. https://docs.python.org/2/tutorial/modules.html
阅读此文