2009年1月18日星期日

python 学习中遇到的问题

class a:
  def __init__(self):
    pass
class b(a):
  def __init__(self,name=None):
    a.__init__(self)
    self.name=name

在继承中,子类要覆盖父类的方法,这时调用父类的方法为什么必须加上self? python不是会自动加么?

str() 和  repr() 的区别?

is 关键字和 == 的区别。 a='hello';b=a;c=a[:];a is c; a is b; a==b; a==c??

2009年1月16日星期五

linux命令:镜像一个http站点

wget -m http://hostname/path

或者
lftp -c 'mirror -c http://hostname/path'

python 中的正则表达式模块 re

import re
p = re.compile(r', (\d{1,3})%')
if p.match('100% up, 23% down'):
    print 'ok'
print p.search('100% up, 23% down').groups()

python 中使用 sleep 函数

from time import sleep
sleep(10)

python 获取 shell 命令的输出

有两种方法。
一种是Popen:

import subprocess
output = subprocess.Popen(['ls','-l'],stdout=subprocess.PIPE,shell=True).communicate()
print output[0]

 
另外一种则可返回状态与调用的shell命令的输出结果

import commands
status, output = commands.getstatusoutput('ls -l')
 
Thanks to sin :)
-----
延伸:通过 dir(commands) 可以得知,实际上 有 getoutput 这个只获取输出的简单方法的。

2009年1月13日星期二

如何显示昨天的时间? linux,shell,date

date -d yesterday
date -d 'now - 1 day'

linux主机做网关,iptables脚本。

eth0绑内网IP,eth1绑外网IP
以下内容加入自启动脚本:
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/iptables --flush INPUT
/sbin/iptables --flush FORWARD
/sbin/iptables --flush POSTROUTING --table nat
/sbin/iptables --policy FORWARD DROP
/sbin/iptables --table nat --append POSTROUTING --out-interface eth1 --source 192.168.0.0/24 --jump MASQUERADE
/sbin/iptables --append FORWARD --in-interface eth1 --match state --state ESTABLISHED,RELATED --jump ACCEPT
/sbin/iptables --append FORWARD --source 192.168.0.0/24 --jump ACCEPT