import os
from subprocess import Popen
pdfs = []
for i in xrange(1, 20):
p = Popen(['htmldoc', '--webpage', '-f', '%d.pdf' % i,
'http://www.djangobook.com/en/2.0/chapter%02d/' % i])
p.wait()
if os.path.exists('%d.pdf' % i):
pdfs.append('%d.pdf' % i)
if len(pdfs) > 0:
cmds = ['pdftk']
cmds.extend(pdfs)
cmds.extend(['cat', 'output', 'all.pdf'])
p = Popen(cmds)
p.wait()
其实 code 很简单,开了 20 个进程使用 htmldoc 将 html 转换成为 pdf,然后使用 pdftk 将几个 pdf 文件合并在一起。
Tuesday, July 26, 2011
一段神奇的 python
代码来源似乎是一个俄国人的 blogger:
几个 http 服务器
python 提供了几个 http 的服务器实现,一个是 BaseHTTPServer,然后有加强版的 SimpleHTTPServer 和 CGIHTTPServer 这么几个。我们往往可以在命令行上通过
python 另外有一个 django 可以实现一个比较复杂的 HTTP 服务器。后面稍微研究下。
$ python -m SimpleHTTPServer 8000在本地开启一个 http 的服务器。这可以方便调试简单的 HTML 页面。通过 CGI 甚至可以调试复杂一点的 AJAX。
python 另外有一个 django 可以实现一个比较复杂的 HTTP 服务器。后面稍微研究下。
Tuesday, July 5, 2011
python 的 reflection
这里仅仅列几个重要的用法。通过 dir 获得成员和成员函数,通过 callable 判断是否成员函数:
通过将对象的方法放在字符串里面就可以把一些行为 encode 在文件中。
def info(a):
for m in dir(a):
if callable(getattr(a, m)):
print m + ' is member function'
else:
print m + ' is a member'因此将文本转换成为代码一般依靠 getattr。另外可以通过 types 中的 FunctionType 判断是否为函数。通过将对象的方法放在字符串里面就可以把一些行为 encode 在文件中。
urllib + os 实现代理访问
import os import urllib os.environ["all_proxy"] = default_proxy + ':' + str(default_proxy_port) data = urllib.urlopen( url ).read()这里的 all_proxy 可以换成 http_proxy、ftp_proxy,all_proxy 是 SOCKS 代理。
通过 urllib 可以直接打开 http/ftp 等链接,并依照环境变量设置代理,非常方便。
Subscribe to:
Posts (Atom)