1.常用内置函数:(不用import就可以直接使用)help(obj)在线帮助,obj可是任何类型callable(obj)查看一个obj是不是可以像函数一样调用repr(obj)得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝eval_r(str)表示合法的python表达式,返回这个表达式dir(obj)查看obj的namespace中可见的namehasattr(obj,name)查看一个obj的namespace中是否有namegetattr(obj,name)得到一个obj的namespace中的一个namesetattr(obj,name,value)为一个obj的namespace中的一个name指向vale这个objectdelattr(obj,name)从obj的namespace中删除一个namevars(obj)返回一个object的namespace。用dictionary表示locals()返回一个局部namespace,用dictionary表示globals()返回一个全局namespace,用dictionary表示type(obj)查看一个obj的类型isinstance(obj,cls)查看obj是不是cls的instanceissubclass(subcls,supcls)查看subcls是不是supcls的子类类型转换函数chr(i)把一个ASCII数值,变成字符ord(i)把一个字符或者unicode字符,变成ASCII数值oct(x)把整数x变成八进制表示的字符串hex(x)把整数x变成十六进制表示的字符串str(obj)得到obj的字符串描述list(seq)把一个sequence转换成一个listtuple(seq)把一个sequence转换成一个tupledict(),dict(list)转换成一个dictionaryint(x)转换成一个integerlong(x)转换成一个longintergerfloat(x)转换成一个浮点数complex(x)转换成复数max(...)求最大值min(...)求最小值用于执行程序的内置函数complie如果一段代码经常要使用,那么先编译,再运行会更快。2.和操作系统相关的调用系统相关的信息模块importsyssys.argv是一个list,包含所有的命令行参数.sys.stdoutsys.stdinsys.stderr分别表示标准输入输出,错误输出的文件对象.sys.stdin.readline()从标准输入读一行sys.stdout.write(a)屏幕输出asys.exit(exit_code)退出程序sys.modules是一个dictionary,表示系统中所有可用的modulesys.platform得到运行的操作系统环境sys.path是一个list,指明所有查找module,package的路径.操作系统相关的调用和操作importosos.environ一个dictionary包含环境变量的映射关系os.environ[HOME]可以得到环境变量HOME的值os.chdir(dir)改变当前目录os.chdir('d:\\outlook')注意windows下用到转义os.getcwd()得到当前目录os.getegid()得到有效组idos.getgid()得到组idos.getuid()得到用户idos.geteuid()得到有效用户idos.setegidos.setegid()os.seteuid()os.setuid()os.getgruops()得到用户组名称列表os.getlogin()得到用户登录名称os.getenv得到环境变量os.putenv设置环境变量os.umask设置umaskos.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/pythonimportos,syscmd=sys.stdin.readline()whilecmd: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')扩展环境变量PATHos.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的文件或目录。deftest_fun(filename,dirname,names)://filename即是walk中的a.cdirname是访问的目录名称iffilenameinnames://names是一个list,包含dirname目录下的所有内容printos.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()regularexpression正则表达式importre简单的regexpp=re.compile(abc)ifp.match(abc):printmatch上例中首先生成一个pattern(模式),如果和某个字符串匹配,就返回一个matchobject除某些特殊字符metacharacter元字符,大多数字符都和自身匹配。这些特殊字符是。^$*+?{[]\|()字符集合(用[]表示)列出字符,如[abc]表示匹配a或b或c,大多数metacharacter在[]中只表示和本身匹配。例:a=.^$*+?{\\|()大多数metachar在[]中都和本身匹配,但^[]\不同p=re.compile([+a+])foriina:ifp.match(i):print[%s]ismatch%ielse:print[%s]isnotmatch%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表示和十六进制ascii0x20匹配有了\,可以在[]中表示任何字符。注:单独的一个.如果没有出现[]中,表示出了换行\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}后面加一个?.matchobject的end可以得到匹配的最后一个字符的位置。re.compile(a*).match('aaaa').end()4最大匹配re.compile(a*?).match('aaaa').end()0最小匹配使用原始字符串字符串表示方法中用\\表示字符\.大量使用影响可读性。解决方法:在字符串前面加一个r表示raw格式。a=r\aprinta结果是\aa=r\aprinta结果是\a使用re模块先用re.compile得到一个RegexObject表示一个regexp后用pattern的match,search的方法,得到MatchObject再用matchobject得到匹配的位置,匹配的字符串等信息RegxObject常用函数:re.compile(a).match(abab)如果abab的开头和re.compile(a)匹配,得到MatchObject_sre.SRE_Matchobjectat0x81d43c8printre.compile(a).match(bbab)None注:从str的开头开始匹配re.compile(a).search(abab)在abab中搜索第一个和re_obj匹配的部分_sre.SRE_Matchobjectat0x81d43c8printre.compile(a).search(bbab)_sre.SRE_Matchobjectat0x8184e18和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,用来遍历所有找到的