首页 > 技术文章 > Python常用技巧

Monitor 2014-10-15 13:48 原文

1.字符串的join与split方法

>>>name = ['my','name','is','monitor'] 
>>>' '.join(name) 
'my name is bob'  
>>>'_'.join(name) 
'my_name_is_monitor'
 
>>> name = 'my..name..is..monitor' 
>>> name.split() 
['my..name..is..monitor'] 
>>> name.split("..") 
['my', 'name', 'is', 'monitor'] 
>>> name.split("..",0) 
['my..name..is..monitor'] 
>>> name.split("..",1) 
['my', 'name..is..monitor'] 
 
2.with语句使用

使用 with 语句,可以实现自动关闭文件、线程锁的自动获取和释放等。假设要对一个文件进行操作,使用 with 语句可以有如下代码:

使用 with 语句操作文件对象
    with open('somefileName','r') as somefile:
        for line in somefile:
            print line
            # ...more code

这里使用了 with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件句柄。如果使用传统的 try/finally 范式,则要使用类似如下代码:

try/finally 方式操作文件对象
    somefile = open('somefileName','r')
    try:
        for line in somefile:
            print line
            # ...more code
    finally:
        somefile.close()

 

3.inspect模块

1. 检查对象类型
is{module|class|function|method|builtin}(obj): 
检查对象是否为模块、类、函数、方法、内建函数或方法。
isroutine(obj):

2. 获取对象信息
getmembers(object[, predicate]): 
这个方法是dir()的扩展版,它会将dir()找到的名字对应的属性一并返回,形如[(name, value), ...]。另外,predicate是一个方法的引用,如果指定,则应当接受value作为参数并返回一个布尔值,如果为False,相应的属性将不会返回。使用is*作为第二个参数可以过滤出指定类型的属性。
getmodule(object): 
它返回object的定义所在的模块对象。
get{file|sourcefile}(object): 
获取object的定义所在的模块的文件名|源代码文件名(如果没有则返回None)。用于内建的对象(内建模块、类、函数、方法)上时会抛出TypeError异常。
get{source|sourcelines}(object): 
获取object的定义的源代码,以字符串|字符串列表返回。代码无法访问时会抛出IOError异常。只能用于module/class/function/method/code/frame/traceack对象。
getargspec(func): 
仅用于方法,获取方法声明的参数,返回元组,分别是(普通参数名的列表, *参数名, **参数名, 默认值元组)。如果没有值,将是空列表和3个None。如果是2.6以上版本,将返回一个命名元组(Named Tuple),即除了索引外还可以使用属性名访问元组中的元素。 
getargvalues(frame): 
仅用于栈帧,获取栈帧中保存的该次函数调用的参数值,返回元组,分别是(普通参数名的列表, *参数名, **参数名, 帧的locals())。如果是2.6以上版本,将返回一个命名元组(Named Tuple),即除了索引外还可以使用属性名访问元组中的元素。 
getcallargs(func[, *args][, **kwds]): 
返回使用args和kwds调用该方法时各参数对应的值的字典。这个方法仅在2.7版本中才有。
getmro(cls): 
返回一个类型元组,查找类属性时按照这个元组中的顺序。如果是新式类,与cls.__mro__结果一样。但旧式类没有__mro__这个属性,直接使用这个属性会报异常,所以这个方法还是有它的价值的。 返回当前的栈帧对象。

 
4.python3中bytes与string的互相转换
按utf-8的方式编码,转成bytes
url = "www.baidu.com"
url = url.encode('UTF-8')
按utf-8的方式编码,转成str
url = url.decode('UTF-8')
 

5.通过源代码安装Python3.4,make install时报错"Ignoring ensurepip failure: pip 1.5.4 requires SSL/TLS"。

缺少openssl,openssl-devel(Ubuntu下为libssl-dev),通过yum -y install openssl openssl-devel安装后,重新编译安装即可。

 

6.Python在交互模式下方向键显示乱码查找得知,是由于系统缺少了readline相关模块。CentOS6.5默认只安装了readline模块而没有安装readline-devel模块,所以只要安装下即可。

#安装readline-devel
$yum install readline-devl

#重新安装python

$./configure

$sudo make 

$sudo make install
 
7.获取本地时间
time.strftime('%Y-%m-%d',time.localtime(time.time())) 

8.import  sqlite3报错

yum install sqlite-devel

重新安装python3

 

 

 

 

推荐阅读