首页 > 技术文章 > python中常用模块

yuanqiangfei 2017-12-25 21:06 原文

OS模块

python编程时,经常和文件、目录打交道,这是就离不了os模块。os模块包含普遍的操作系统功能,与具体的平台无关os.name()——判断现在正在实用的平台,Windows 返回 ‘nt'; Linux 返回’posix'os.getcwd()——得到当前工作的目录

os.getcwd()              #获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")            #改变当前脚本工作目录;相当于shell下cd
os.curdir                #返回当前目录: ('.')
os.pardir                #获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')     #可生成多层递归目录
os.removedirs('dirname1')          #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')            #生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')           #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')           #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()                #删除一个文件
os.rename("oldname","newname")    #重命名文件/目录
os.stat('path/filename')          #获取文件/目录信息
os.sep                 #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep                #输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep               #输出用于分割文件路径的字符串
os.name                #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")       #运行shell命令,直接显示
os.environ                #获取系统环境变量
os.path.abspath(path)                    #返回path规范化的绝对路径
os.path.split(path)            #将path分割成目录和文件名二元组返回
os.path.dirname(path)           #返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)          #返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)            #如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)           #如果path是绝对路径,返回True
os.path.isfile(path)             #如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)             #如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])      # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)          #返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)         #返回path所指向的文件或者目录的最后修改时间

  

sys模块 

sys.argv                    #命令行参数List,第一个元素是程序本身路径
sys.exit(n)                #退出程序,正常退出时exit(0)
sys.version                #获取Python解释程序的版本信息
sys.path                   #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform               #返回操作系统平台名称
sys.stdout.write('please:')
sys.exit(n)             退出程序,正常退出时exit(0)  
sys.hexversion          获取Python解释程序的版本值,16进制格式如:0x020403F0  
sys.version             获取Python解释程序的版本信息  
sys.platform            返回操作系统平台名称  
sys.stdout              标准输出  
sys.stdout.write('aaa') 标准输出内容  
sys.stdout.writelines() 无换行输出  
sys.stdin               标准输入  
sys.stdin.read()        输入一行  
sys.stderr              错误输出  
sys.exc_clear()         用来清除当前线程所出现的当前的或最近的错误信息   
sys.exec_prefix         返回平台独立的python文件安装的位置   
sys.byteorder           本地字节规则的指示器,big-endian平台的值是'big',little-endian平台的值是'little'   
sys.copyright           记录python版权相关的东西   
sys.api_version         解释器的C的API版本   
sys.version_info        'final'表示最终,也有'candidate'表示候选,表示版本级别,是否有后继的发行   
sys.getdefaultencoding()        返回当前你所用的默认的字符编码格式   
sys.getfilesystemencoding()     返回将Unicode文件名转换成系统文件名的编码的名字   
sys.builtin_module_names        Python解释器导入的内建模块列表   
sys.executable                  Python解释程序路径   
sys.getwindowsversion()         获取Windows的版本   
sys.stdin.readline()            从标准输入读一行,sys.stdout.write("a") 屏幕输出a  
sys.setdefaultencoding(name)    用来设置当前默认的字符编码(详细使用参考文档)   
sys.displayhook(value)          如果value非空,这个函数会把他输出到sys.stdout(详细使用参考文档)  

  

正则re模块

'.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
'^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
'$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
'*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']
'+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
'?'     匹配前一个字符1次或0次
'{m}'   匹配前一个字符m次
'{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
'|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
'(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
 
 
'\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
'\Z'    匹配字符结尾,同$
'\d'    匹配数字0-9
'\D'    匹配非数字
'\w'    匹配[A-Za-z0-9]
'\W'    匹配非[A-Za-z0-9]
's'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'

datetime,date,time模块  

   datetime.date.today()           本地日期对象,(用str函数可得到它的字面表示(2014-03-24))  
    datetime.date.isoformat(obj)    当前[年-月-日]字符串表示(2014-03-24)  
    datetime.date.fromtimestamp()   返回一个日期对象,参数是时间戳,返回 [年-月-日]  
    datetime.date.weekday(obj)      返回一个日期对象的星期数,周一是0  
    datetime.date.isoweekday(obj)   返回一个日期对象的星期数,周一是1  
    datetime.date.isocalendar(obj)  把日期对象返回一个带有年月日的元组  
    datetime对象:  
    datetime.datetime.today()       返回一个包含本地时间(含微秒数)的datetime对象 2014-03-24 23:31:50.419000  
    datetime.datetime.now([tz])     返回指定时区的datetime对象 2014-03-24 23:31:50.419000  
    datetime.datetime.utcnow()      返回一个零时区的datetime对象  
    datetime.fromtimestamp(timestamp[,tz])      按时间戳返回一个datetime对象,可指定时区,可用于strftime转换为日期表示   
    datetime.utcfromtimestamp(timestamp)        按时间戳返回一个UTC-datetime对象  
    datetime.datetime.strptime('2014-03-16 12:21:21',"%Y-%m-%d %H:%M:%S") 将字符串转为datetime对象  
    datetime.datetime.strftime(datetime.datetime.now(), '%Y%m%d %H%M%S') 将datetime对象转换为str表示形式  
    datetime.date.today().timetuple()           转换为时间戳datetime元组对象,可用于转换时间戳  
    datetime.datetime.now().timetuple()  
    time.mktime(timetupleobj)                   将datetime元组对象转为时间戳  
    time.time()                     当前时间戳  
    time.localtime  
    time.gmtime   

hashlib,md5模块 

    hashlib.md5('md5_str').hexdigest()      对指定字符串md5加密  
    md5.md5('md5_str').hexdigest()          对指定字符串md5加密  

random模块

    random.random()             产生0-1的随机浮点数  
    random.uniform(a, b)        产生指定范围内的随机浮点数  
    random.randint(a, b)        产生指定范围内的随机整数  
    random.randrange([start], stop[, step]) 从一个指定步长的集合中产生随机数  
    random.choice(sequence)     从序列中产生一个随机数  
    random.shuffle(x[, random]) 将一个列表中的元素打乱  
    random.sample(sequence, k)  从序列中随机获取指定长度的片断  

MySQLdb模块

    MySQLdb.get_client_info()           获取API版本  
    MySQLdb.Binary('string')            转为二进制数据形式  
    MySQLdb.escape_string('str')        针对mysql的字符转义函数  
    MySQLdb.DateFromTicks(1395842548)   把时间戳转为datetime.date对象实例  
    MySQLdb.TimestampFromTicks(1395842548)   把时间戳转为datetime.datetime对象实例  
    MySQLdb.string_literal('str')       字符转义  
    MySQLdb.cursor()游标对象上的方法:《python核心编程》P624 

string模块

   str.capitalize()            把字符串的第一个字符大写  
    str.center(width)           返回一个原字符串居中,并使用空格填充到width长度的新字符串  
    str.ljust(width)            返回一个原字符串左对齐,用空格填充到指定长度的新字符串  
    str.rjust(width)            返回一个原字符串右对齐,用空格填充到指定长度的新字符串  
    str.zfill(width)            返回字符串右对齐,前面用0填充到指定长度的新字符串  
    str.count(str,[beg,len])    返回子字符串在原字符串出现次数,beg,len是范围  
    str.decode(encodeing[,replace]) 解码string,出错引发ValueError异常  
    str.encode(encodeing[,replace]) 解码string  
    str.endswith(substr[,beg,end])  字符串是否以substr结束,beg,end是范围  
    str.startswith(substr[,beg,end])  字符串是否以substr开头,beg,end是范围  
    str.expandtabs(tabsize = 8)     把字符串的tab转为空格,默认为8个  
    str.find(str,[stat,end])        查找子字符串在字符串第一次出现的位置,否则返回-1  
    str.index(str,[beg,end])        查找子字符串在指定字符中的位置,不存在报异常  
    str.isalnum()               检查字符串是否以字母和数字组成,是返回true否则False  
    str.isalpha()               检查字符串是否以纯字母组成,是返回true,否则false  
    str.isdecimal()             检查字符串是否以纯十进制数字组成,返回布尔值  
    str.isdigit()               检查字符串是否以纯数字组成,返回布尔值  
    str.islower()               检查字符串是否全是小写,返回布尔值  
    str.isupper()               检查字符串是否全是大写,返回布尔值  
    str.isnumeric()             检查字符串是否只包含数字字符,返回布尔值  
    str.isspace()               如果str中只包含空格,则返回true,否则FALSE  
    str.title()                 返回标题化的字符串(所有单词首字母大写,其余小写)  
    str.istitle()               如果字符串是标题化的(参见title())则返回true,否则false  
    str.join(seq)               以str作为连接符,将一个序列中的元素连接成字符串  
    str.split(str='',num)       以str作为分隔符,将一个字符串分隔成一个序列,num是被分隔的字符串  
    str.splitlines(num)         以行分隔,返回各行内容作为元素的列表  
    str.lower()                 将大写转为小写  
    str.upper()                 转换字符串的小写为大写  
    str.swapcase()              翻换字符串的大小写  
    str.lstrip()                去掉字符左边的空格和回车换行符  
    str.rstrip()                去掉字符右边的空格和回车换行符  
    str.strip()                 去掉字符两边的空格和回车换行符  
    str.partition(substr)       从substr出现的第一个位置起,将str分割成一个3元组。  
    str.replace(str1,str2,num)  查找str1替换成str2,num是替换次数  
    str.rfind(str[,beg,end])    从右边开始查询子字符串  
    str.rindex(str,[beg,end])   从右边开始查找子字符串位置   
    str.rpartition(str)         类似partition函数,不过从右边开始查找  
    str.translate(str,del='')   按str给出的表转换string的字符,del是要过虑的字符  

shutil模块 

shutil.copyfile( src, dst)   #从源src复制到dst中去。 如果当前的dst已存在的话就会被覆盖掉
shutil.move( src, dst)  #移动文件或重命名
shutil.copymode( src, dst) #只是会复制其权限其他的东西是不会被复制的
shutil.copystat( src, dst) #复制权限、最后访问时间、最后修改时间
shutil.copy( src, dst)  #复制一个文件到一个文件或一个目录
shutil.copy2( src, dst)  #在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
shutil.copy2( src, dst)  #如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作
shutil.copytree( olddir, newdir, True/Flase) #把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
shutil.rmtree( src )   #递归删除一个目录以及目录内的所有内容

  

  

  

推荐阅读