Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Friday, April 17, 2009

如何开始写 python 代码

本教程是让你可以开始写 python 代码,面对的是新手中的新手。

  • 系统环境:linux/unix
  • 操作环境:bash

学习python势必要创建程序文件,那么最好把它们放到一起。比如 ~/projs/pytut
意义是在我的 HOME 目录下的 projs(项目) 的 pytut(python tutorial) 目录。

下面正式进入。
后面的操作不特别指明,都是在 bash 环境中

[~] $ mkdir -p ~/projs/pytut 建立目录
[~] $ cd ~/projs/pytut 进入刚才建立的目录
[~/projs/pytut] $ python -V 看看 python 的版本,如果没有安装会提示
[~/projs/pytut] $ vim hello.py 使用 vim 编辑文件 hello.py,如果文件不存在,vim 会自己创建

然后就进入 vim 的编辑环境了,基础用法:
vim 比较奇怪,进去以后是不能直接输入字符的,不想我们常用的编辑器那样。
他默认是处于命令模式,即你输入的任何东西都当作命令来处理了,那么要输入字符,需要 i 命令。
移动光标的话可以用方向键,也可以用 hjkl 四个键,自己试试吧,也许一开始不好使,因为还没有内容。
按了 i 进入文字编辑模式以后,可以像我们常用的编辑器那样输入、编辑。当输入完了,按 Esc键(键盘左上角的按键,不是输入3个字符) 回到命令模式。
再举例常用的命令:

移动光标到第5行5gg
移动光标到第20行20gg
移动光标到第1行gg
移动光标到最后1行G
移动光标到下个单词w
删除光标所在字符d
删除光标所在单词dw
删除光标所在行dd
删除从光标所在行起的5行5dd

其他用法参考 vim 用法

介绍完工具,下面说 python。在刚才创建的 hello.py 中输入以下代码:

#!/usr/bin/python

print 'Hello python'

输入完后返回 vim 的命令模式,输入 :wq(保存(w - write)并退出(q - quit) vim),
然后在 bash 下输入 python hello.py,看看屏幕上是否显示了 Hello python。
OK,到此为止,后面请移看 此篇(这篇文字的目的是把这个文章的入门描述清楚)。

Monday, March 30, 2009

python 动态生成 zip 文件

python 中处理 zip 文件

from zipfile import ZipFile

z = ZipFile('abc.zip', 'w')
z.write('abc.txt', 't/abc.txt')
z.writestr('t/abc2.txt', 'this text is from my')
z.close()


# 即时压缩

import os
from zipfile import ZipFile
from StringIO import StringIO

f = StringIO()
z = ZipFile(f, 'w')

def safewrite(f, *arg, **kw):
    if os.path.isfile(f):
        z.write(f, *arg, **kw)
    elif os.path.isdir(f):
        for root, dirs, files in os.walk(f):
            for f_ in files:
                z.write(os.path.join(root, f_))

safewrite('flash')
safewrite('abc.txt', 't/abc.txt')
z.writestr('t/abc2.txt', 'this text is from my')
z.close()


print 'Content-Type: application/zip'
print 'Content-Disposition: attachment; filename=abc.zip'
print

print f.getvalue()

Monday, March 23, 2009

add app on existing apache site 给apache站点添加功能

服务器上跑着 apache,服务着我们日常工作。现在要扩展一下功能。
因为之前的静态为主,而又不想用 php(其实是不熟)。所以打算用 python(webpy) 来在原有基础上扩展。
为啥注重 原有基础 呢?
因为不想另开端口。
对比了一下,决定用 scgi
apache 配置:
LoadModule scgi_module Modules/mod_scgi.so
SCGIMount /editor 127.0.0.1:8080
重启 apache,然后启动 py 程序:
python code.py 127.0.0.1:8080 scgi
这样启动起来的 py 比较麻烦,
可以考虑使用 nohup 来搞定。
nohup sudo python ./code.py 127.0.0.1:8080 scgi &
这样 py 就会在后台执行,即使你退出了 ssh 也不会把程序搞停。
如果想看看有哪些程序在后台执行,可以 jobs。
如果想激活其中的某个,就 fg n,其中 n 为 jobs 时候看到的第一列的 id。
对应 fg 的还有 bg,不过我还不知道如何使用。
激活后,用 Ctrl + D 即可退出。或者是 Ctrl + C?忘记了。呵呵。自己试试吧。
参考
  1. webpy 安装
  2. mod_wsgi
  3. 关于 nohup (这个链接可能已经不可用,可用 gr 订阅 http://www.ijiyi.com/feed 看好使不)
发现,现在越来越离不开 search 了。
看文章也习惯的先找 rss ,然后订阅到 gr ,然后才找出来看。
好处就是以后可以在 gr 里搜索看过的文章,
坏处就是 gr 里有好几k(甚至好几w,没知道) 的未读。
看的让我再也没有兴趣把未读数搞定下来。