python学习日志(一)


Author:Alex Xiang(x86)
Date: 03/19/2009

工作上的需要,需要写一些Python脚本,顺便把学习过程中的一些心得记下来以备查看。

1. python 三元操作
类似于C的x=a?:0:1,python的方式是:x=a and 0 or 1

2. 模块间共享变量
三个模块a,b,c,其中a和b都要用到c的变量
a:
import c
from b import *
print c.x

b:
import c
c.x = 1

c:
x = 0

3. 十六进制数的显示
一个十六进制数要按字符串的方式显示,可以这样:
x=0x100
'0x%x' %x
'0x100'

4. 正则表达式
得到内存大小:
import re
import os
lines = os.popen("free").readlines()
p=re.compile(".*Mem:/s+(/d+)/s+.*", re.S)
m = p.match(str(lines))
if(m):
  print "total=" + m.group(1) + "/n"
5. 数字和字符串之间转换
a="0x100"
b=int(a,16)  # 第二个参数表示16进制,缺省是十进制

6.可变参数
一颗星类似于C的可变参数
def test1(a, *b):
  print a
  print "length of b is: %d " % len(b)
  print b
  print b[1]

test1(1,2,3,4)的输出结果:
1
length of b is: 3
(2, 3, 4)
3

两颗星表示参数是一个字典:
def test2(**a):
  for i in a:
    print i + " = " + a[i]
test2(a="1", b="2")的输出结果是:
a = 1
b = 2

7. 正则表达式,匹配多处结果
看看这个例子,每处匹配有两个项,注意re.S使得可以匹配多行(忽略/n)
>>> p=re.compile("a(/d+)b(/d+)c", re.S)
>>> result = p.findall("a1b1c,a2b2c/na3b3c/na4b4c")
>>> result
[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4')]

8. 生成掩码
有一个列表,比如[1,3,4,5],生成一个掩码,如果某个数在列表里,则掩码相应位置1
mask = 0x0
for i in range(16):
if str(i) in a_list:
  mask |= 1<
mask_str = "0x%x" % mask

9. 运行外部命令
用subprocess挺好
import subprocess
p = subprocess.Popen(cmd_str, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
stdoutdata, stderrdata = p.communicate()   
if p.returncode != 0:
    print "Failed。/n")

另一个例子,ping一个地址,用subprocess.call
def dl_ping(host):
    ret = subprocess.call("ping -c 1 %s" % host, shell=True, stdout=open('/dev/null', 'w'), stderr=subprocess.STDOUT)
    if ret == 0:
        print host + " is alive/n"
        return True
    else:
        print host + " did not respond/n"
        return False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值