(译) PEP 333 - Python Web Server Gateway Interface v1.0 中文版
PEP 333 - Python Web Server Gateway Interface v1.0 中文版
============
翻译自
Python Web Server Gateway Interface v1.0
PEP 333 - Python Web Server Gateway Interface v1.0
译者的话
Python基础学完后,免不了要深入到Python的主流Web框架(Python科学计算那部分暂时用不到可以先不管),在学习Flask这些框架的过程中发现它们的底层都是WSGI协议,故决定先啃下WSGI,鉴于目前网上几乎没有(完整的)WSGI中文版,于是干脆自己翻译,这样也有助于加深自己的理解,也能够帮助到一些初学者。
内容
- 序言
- 摘要
- 基本原理及目标
- 规范概述
- 应用程序/框架 端
- 服务器/网关 端 ...
(译) 几分钟学习一门编程语言之Python篇 (最新版)
几分钟学习一门编程语言之Python篇 (最新版)
翻译自
Learn X in Y Minutes: Where X = Python
Learn X in Y Minutes: Where X = Python
Python由Guido Van Rossum
发明于90年代初期,是当今最流行的编程语言之一,我深深被它清晰简洁的语法所折服并从此爱上了它。Python的代码之简洁,几乎就是可执行的伪代码。
若能提供给我们反馈,将非常欢迎!你可以通过推特@louiedinh或邮箱louiedinh AT gmail来联系我。
请注意:本文是专门针对Python 2.7的,但应该同样也适用于Python 2.x的。至于 Python 3.x,请阅读我们最新的指南 Learn X in Y ...
more ...(译) 迭代器和生成器
迭代器和生成器
翻译自:
5.Iterators & Generators
5.Iterators & Generators
5.1. 迭代器(Iterators)
首先,我们用for
循环来循环遍历一个列表(list)。
>>> for i in [1, 2, 3, 4]:
... print i,
...
1
2
3
4
假如我们将for
循环用在一个字符串中,它将会遍历字符串的每一个字符。
>>> for c in "python":
... print c
...
p
y
t
h
o
n
假如我们将for
循环用在一个字典中,它将遍历字典的每一个 ...
(译) WSGI基础知识
WSGI 基础知识
翻译自
Basics of WSGI
http://agiliq.com/blog/2013/07/basics-wsgi/
在这篇文章里,我们将会写一个web app,这个app它会服务一些url。我们将不会使用任何Python框架来写它。我们只是去说明一下这些机制的背后原理。
在开始写这个web app之前,我们先来澄清几个下文将要用到的术语。
-
Web服务器(Web Server): 当我们说Web 服务器时,我们指的是软件,而不是那些存储你代码的硬件机器。这个服务器会接收从客户端(Web浏览器)发送过来的请求并返回一个响应(response)。Web服务器本身并不创建响应,它只负责返回响应。所以,Web服务器就需要同Web应用程序交流,因为Web应用程序它能产生响应。
-
Web应用程序(Web Application):Web服务器从它这里拿到响应。Web Application的职责就是根据url来创建响应并将响应传回给Web服务器。然后Web服务器就只是返回这个响应到客户端而已。
-
WSGI: WSGI是一个接口,它只是一份规范或者说是一系列的规则。WSIG不是一个软件。
WSGI会引起人们的注意是因为Web服务器需要跟Web应用程序通信 ...
more ...Python删除文件夹下所有特定类型文件
写了个递归删除一个或多个文件夹下所有bmp图片的脚本:
import os
def del_bmp(root_dir="C:\temp"):
"""
@Function: Delete all bmp image file in root_dir and its subdirectory
@root_dir: The target directory
"""
file_list = os.listdir(root_dir)
for f in file_list:
file_path = os.path.join(root_dir, f)
if os.path.isfile(file_path):
if f.endswith(".BMP") or f.endswith ...
Python中range和xrange区别
所有Python的学习者都会遇到这个问题,range和xrange都可以是列表生成器,它们有什么区别?
range
函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。range一上来就直接开辟一大块内存,返回一个完整list对象。
xrange
函数说明:用法与range完全相同,所不同的是生成的不是一个list对象,而是一个生成器,在每次调用时返回其中的一个值。
所以显而易见,除非你真的是想一次性返回整个列表,否则,在循环中,xrange的性能要大大优于range,特别是列表很大或者内存吃紧的时候,所以,循环中请尽量用xrange.
more ...解决Python往文件中插入多行字符串时的一个小问题
用Apache搭了一个最简单的Http服务器,每一次自动化脚本跑完之后要往http服务器的首页insert一条记录。
截图:
往Html源文件插入一行的代码如下所示:
def modify_index_html(apache_dir, log_path):
"""
Function:Update the index.html to reflect the run result to the overall report
@apache_dir: Apache http server folder:"C:\\Program Files (x86)\\Apache Software Foundation\\Apache2.2\\htdocs\\"
@log_path: the path to the log generated in this run
"""
logger.info("Updating ...
ConfigParser模块解析配置文件
- 解析配置文件很常见,Python官方的库ConfigParser就自带了这功能。
- 配置文件由多个section构成,每个section下面有多个配置项,配置项的格式为:key=value
假设有一个配置文件为config.conf,格式如下,有两个section,我们来利用ConfigParser模块对其做解析:
[db]
db_host=localhost
db_port=3306
db_user=root
db_pass=toor
[concurrent]
thread=10
processor=20
解析的Python代码如下,比较简单,10分钟就能学完。
import ConfigParser
conf = ConfigParser.ConfigParser()
conf.read("/Users/Heros/config.conf")
all_sections = conf.sections() # 返回['db', 'concurrent']
db_options = conf.options("db ...
Logging模块日志相关
就像Java中有log4j一样,Python也有自己的日志模块Logging。Logging模块提供不同的日志级别
pass
Shutil模块文件操作
Python文件操作有os.path,用了一段时间发现Shutil强大许多。
pass