python常用函数年头大总结
1.常用内置函数:(不消import就可以直接利用)
help(obj) 在线辅佐, obj但是任何范例
callable(obj) 查察一个obj是不是可以像函数一样挪用
repr(obj) 获得obj的暗示字符串,可以操作这个字符串eval重建该工具的一个拷贝
eval_r(str) 暗示正当的python表达式,返回这个表达式
dir(obj) 查察obj的name space中可见的name
hasattr(obj,name) 查察一个obj的name space中是否有name
getattr(obj,name) 获得一个obj的name space中的一个name
setattr(obj,name,value) 为一个obj的name space中的一个name指向vale这个object
delattr(obj,name) 从obj的name space中删除一个name
vars(obj) 返回一个object的name space。用dictionary暗示
locals() 返回一个局部name space,用dictionary暗示
globals() 返回一个全局name space,用dictionary暗示
type(obj) 查察一个obj的范例
isinstance(obj,cls) 查察obj是不是cls的instance
issubclass(subcls,supcls) 查察subcls是不是supcls的子类
范例转换函数
chr(i) 把一个ASCII数值,酿成字符
ord(i) 把一个字符可能unicode字符,酿成ASCII数值
oct(x) 把整数x酿成八进制暗示的字符串
hex(x) 把整数x酿成十六进制暗示的字符串
str(obj) 获得obj的字符串描写
list(seq) 把一个sequence转换成一个list
tuple(seq) 把一个sequence转换成一个tuple
dict(),dict(list) 转换成一个dictionary
int(x) 转换成一个integer
long(x) 转换成一个long interger
float(x) 转换成一个浮点数
complex(x) 转换成复数
max(…) 求最大值
min(…) 求最小值
用于执行措施的内置函数
complie 假如一段代码常常要利用,那么先编译,再运行会更快。
2.和操纵系统相关的挪用
系统相关的信息模块 import sys
sys.argv是一个list,包括所有的呼吁行参数.
sys.stdout sys.stdin sys.stderr 别离暗示尺度输入输出,错误输出的文件工具.
sys.stdin.readline() 从尺度输入读一行 sys.stdout.write("a") 屏幕输出a
sys.exit(exit_code) 退出措施
sys.modules 是一个dictionary,暗示系统中所有可用的module
sys.platform 获得运行的操纵系统情况
sys.path 是一个list,指明所有查找module,package的路径.
操纵系统相关的挪用和操纵 import os
os.environ 一个dictionary 包括情况变量的映射干系 os.environ["HOME"] 可以获得情况变量HOME的值
os.chdir(dir) 改变当前目次 os.chdir('d:\\outlook') 留意windows下用到转义
os.getcwd() 获得当前目次
os.getegid() 获得有效组id os.getgid() 获得组id
os.getuid() 获得用户id os.geteuid() 获得有效用户id
os.setegid os.setegid() os.seteuid() os.setuid()
os.getgruops() 获得用户组名称列表
os.getlogin() 获得用户登录名称
os.getenv 获得情况变量
os.putenv 配置情况变量
os.umask 配置umask
os.system(cmd) 操作系统挪用,运行cmd呼吁
操纵举例:
os.mkdir('/tmp/xx') os.system("echo 'hello' > /tmp/xx/a.txt") os.listdir('/tmp/xx')
os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt') os.remove('/tmp/xx/b.txt') os.rmdir('/tmp/xx')
用python编写一个简朴的shell
#!/usr/bin/python
import os, sys
cmd = sys.stdin.readline()
while cmd:
os.system(cmd)
cmd = sys.stdin.readline()
用os.path编写平台无关的措施
os.path.abspath("1.txt") == os.path.join(os.getcwd(), "1.txt")
os.path.split(os.getcwd()) 用于分隔一个目次名称中的目次部门和文件名称部门。
os.path.join(os.getcwd(), os.pardir, 'a', 'a.doc') 全成路径名称.
os.pardir 暗示当前平台下上一级目次的字符 ..
os.path.getctime("/root/1.txt") 返回1.txt的ctime(建设时间)时间戳
os.path.exists(os.getcwd()) 判定文件是否存在
os.path.expanduser('~/dir') 把~扩展成用户根目次
os.path.expandvars('$PATH') 扩展情况变量PATH
os.path.isfile(os.getcwd()) 判定是否是文件名,1是0否
os.path.isdir('c:\Python26\temp') 判定是否是目次,1是0否
os.path.islink('/home/huaying/111.sql') 是否是标记毗连 windows下不行用
os.path.ismout(os.getcwd()) 是否是文件系统安装点 windows下不行用
os.path.samefile(os.getcwd(), '/home/huaying') 看看两个文件名是不是指的是同一个文件
os.path.walk('/home/huaying', test_fun, "a.c")
遍历/home/huaying下所有子目次包罗本目次,对付每个目次城市挪用函数test_fun.
例:在某个目次中,和他所有的子目次中查找名称是a.c的文件或目次。
def test_fun(filename, dirname, names): //filename等于walk中的a.c dirname是会见的目次名称
if filename in names: //names是一个list,包括dirname目次下的所有内容
print os.path.join(dirname, filename)
os.path.walk('/home/huaying', test_fun, "a.c")
文件操纵
打开文件
f = open("filename", "r") r只读 w写 rw读写 rb读二进制 wb写二进制 w+写追加
读写文件
f.write("a") f.write(str) 写一字符串 f.writeline() f.readlines() 与下read类同
f.read() 全读出来 f.read(size) 暗示从文件中读取size个字符
f.readline() 读一行,到文件末了,返回空串. f.readlines() 读取全部,返回一个list. list每个元素暗示一行,包括"\n"\
f.tell() 返回当前文件读取位置
f.seek(off, where) 定位文件读写位置. off暗示偏移量,正数向文件尾移动,负数暗示向开头移动。
where为0暗示从开始算起,1暗示从当前位置算,2暗示从末了算.
f.flush() 刷新缓存
封锁文件
f.close()
regular expression 正则表达式 import re
简朴的regexp
p = re.compile("abc") if p.match("abc") : print "match"
上例中首先生成一个pattern(模式),假如和某个字符串匹配,就返回一个match object
除某些非凡字符metacharacter元字符,大大都字符都和自身匹配。
这些非凡字符是 。^ $ * + ? { [ ] \ | ( )
字符荟萃(用[]暗示)
列出字符,如[abc]暗示匹配a或b或c,大大都metacharacter在[]中只暗示和自己匹配。例:
a = ".^$*+?{\\|()" 大大都metachar在[]中都和自己匹配,但"^[]\"差异
p = re.compile("["+a+"]")
for i in a:
if p.match(i):
print "[%s] is match" %i
else:
print "[%s] is not match" %i
在[]中包括[]自己,暗示"["可能"]"匹配.用\[和\]暗示.
^呈此刻[]的开头,暗示取反.[^abc]暗示除了a,b,c之外的所有字符。^没有呈此刻开头,即于身身匹配。
-可暗示范畴.[a-zA-Z]匹配任何一个英文字母。[0-9]匹配任何数字。
\在[]中的妙用。
\d [0-9]
\D [^0-9]
\s [ \t\n\r\f\v]
\S [^ \t\n\r\f\v]
\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]
\t 暗示和tab匹配, 其他的都和字符串的暗示法一致
\x20 暗示和十六进制ascii 0x20匹配
#p#分页标题#e#
有了\,可以在[]中暗示任何字符。注:单独的一个"."假如没有呈现[]中,暗示出了换行\n以外的匹配任何字符,雷同[^\n].
regexp的反复
{m,n}暗示呈现m个以上(含m个),n个以下(含n个). 如ab{1,3}c和abc,abbc,abbbc匹配,不会与ac,abbbc匹配。
m是下界,n是上界。m省略表下界是0,n省略,表上界无限大。
*暗示{,} +暗示{1,} ?暗示{0,1}
最大匹配和最小匹配 python都是最大匹配,假如要最小匹配,在*,+,?,{m,n}后头加一个?.
match object的end可以获得匹配的最后一个字符的位置。
re.compile("a*").match('aaaa').end() 4 最大匹配
re.compile("a*?").match('aaaa').end() 0 最小匹配
利用原始字符串
字符串暗示要领顶用\\暗示字符\.大量利用影响可读性。
办理要领:在字符串前面加一个r暗示raw名目。
a = r"\a" print a 功效是\a
a = r"\"a" print a 功效是\"a
利用re模块
先用re.compile获得一个RegexObject 暗示一个regexp
后用pattern的match,search的要领,获得MatchObject
再用match object获得匹配的位置,匹配的字符串等信息
RegxObject常用函数:
>>> re.compile("a").match("abab") 假如abab的开头和re.compile("a")匹配,获得MatchObject
<_sre.SRE_Match object at 0x81d43c8>
>>> print re.compile("a").match("bbab")
None 注:从str的开头开始匹配
>>> re.compile("a").search("abab") 在abab中搜索第一个和re_obj匹配的部门
<_sre.SRE_Match object at 0x81d43c8>
>>> print re.compile("a").search("bbab")
<_sre.SRE_Match object at 0x8184e18> 和match()差异,不必从开头匹配
re_obj.findall(str) 返回str中搜索所有和re_obj匹配的部门.
返回一个tuple,个中元素是匹配的字符串.
MatchObject的常用函数
m.start() 返回起始位置,m.end()返回竣事位置(不包括该位置的字符).
m.span() 返回一个tuple暗示(m.start(), m.end())
m.pos(), m.endpos(), m.re(), m.string()
m.re().search(m.string(), m.pos(), m.endpos()) 会获得m自己
m.finditer()可以返回一个iterator,用来遍历所有找到的MatchObject.
for m in re.compile("[ab]").finditer("tatbxaxb"):
print m.span()
高级regexp
| 暗示连系多个regexp. A B两个regexp,A|B暗示和A匹配可能跟B匹配.
^ 暗示只匹配一行的开始行首,^只有在开头才有此非凡意义。
$ 暗示只匹配一行的末了
\A 暗示只匹配第一行字符串的开头 ^匹配每一行的行首
\Z 暗示只匹配行一行字符串的末了 $匹配第一行的行尾
\b 只匹配词的界线 例:\binfo\b 只会匹配"info" 不会匹配information
\B 暗示匹配非单词界线
示譬喻下:
>>> print re.compile(r"\binfo\b").match("info ") #利用raw名目 \b暗示单词界线
<_sre.SRE_Match object at 0x817aa98>
>>> print re.compile("\binfo\b").match("info ") #没有利用raw \b暗示退格标记
None
>>> print re.compile("\binfo\b").match("\binfo\b ")
<_sre.SRE_Match object at 0x8174948>
分组(Group) 示例:re.compile("(a(b)c)d").match("abcd").groups() ('abc', 'b')
#!/usr/local/bin/python
import re
x = """
name: Charles
Address: BUPT
name: Ann
Address: BUPT
"""
#p = re.compile(r"^name:(.*)\n^Address:(.*)\n", re.M)
p = re.compile(r"^name:(?P<name>.*)\n^Address:(?P<address>.*)\n", re.M)
for m in p.finditer(x):
print m.span()
print "here is your friends list"
print "%s, %s"%m.groups()
Compile Flag
用re.compile获得RegxObject时,可以有一些flag用来调解RegxObject的具体特征.
DOTALL, S 让.匹配任意字符,包罗换行符\n
IGNORECASE, I 忽略巨细写
LOCALES, L 让\w \W \b \B和当前的locale一致
MULTILINE, M 多行模式,只影响^和$(拜见上例)
VERBOSE, X verbose模式