python_常用内置模块

Posted 叶小黑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_常用内置模块相关的知识,希望对你有一定的参考价值。

一、time模块(时间模块):

  表示时间的三种方法:

    在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:

    (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

    (2)格式化的时间字符串(Format String): ‘1995-10-04’

%y 两位数的年份表示(00-99%Y 四位数的年份表示(000-9999%m 月份(01-12%d 月内中的一天(0-31%H 24小时制小时数(0-23%I 12小时制小时数(01-12%M 分钟数(00=59%S 秒(00-59%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
时间格式化符号

    (3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等

            

1 import time
2 3 
4 print(time.asctime()) # 返回时间的格式:Sun May 20 21:31:15 2018
5 print(time.time()) # 返回时间戳:1526823135.9531205
6 print(time.gmtime()) # 同time.localtime()效果一样;返回本地时间的struct time对象格式:time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=33, tm_sec=33, tm_wday=6, tm_yday=140, tm_isdst=0)
7 print(time.localtime())
8 print(time.strftime("%Y-%m-%d")) #返回自定义格式的当前时间 :2018-05-20
9 print(time.strptime("2018-05-20","%Y-%m-%d")) # 将指定的时间转为struct time对象格式:time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=140, tm_isdst=-1)

 

1 import datetime
2 
3 print(datetime.datetime.now())  # 返回当前时间:2018-05-20 21:42:57.486770
4 print(datetime.date.fromtimestamp(time.time())) #将时间戳转换为时间格式:2018-05-20
5 print(datetime.datetime.now() + datetime.timedelta(3))    # 返回时间在当前日期上 +3 天
6 print(datetime.datetime.now() + datetime.timedelta(-3))    # 返回时间在当前日期上 -3 天
7 print(datetime.datetime.now() + datetime.timedelta(hours= 3)) # 返回时间在当前时间上 +3 小时
8 print(datetime.datetime.now() + datetime.timedelta(minutes=30))  # 返回时间在当前时间上 +30 分钟

二、random模块(随机数模块):

 1 import random
 2 
 3 print(random.random())  #返回0到1之间的一个小数:0.9228097480430517
 4 print(random.uniform(1,3)) # 返回指定区域的任意一个浮点数
 5 print(random.randint(1,5)) #返回1到5之间的整数
 6 print(random.randrange(10)) #返回一个整数
 7 print(random.choice("hello")) #返回字符串中任意一个元素
 8 print(random.sample("hello",3)) # 以列表的形式返回指定个数的任意元素
 9 
10 # 生成随机数
11 
12 RandomNum=""
13 for i in range(5):
14 
15     AddNum=random.choice([random.randint(1.,10),chr(random.randint(65,90))])
16     RandomNum+=str(AddNum)
17 
18 print(RandomNum)

 三、OS模块(python调用系统动作的接口)

 1 import os
 2 
 3 print(os.getcwd()) #获取当前工作目录
 4 os.chdir(\'D:\\\\Py_dir\') # 切换目录
 5 print(os.curdir)  #返回当前目录
 6 print(os.pardir)  #返回父级目录
 7 os.makedirs(\'aaa\\\\bbb\\ccc\') #递归创建目录
 8 os.removedirs(\'aaa\\\\bbb\\ccc\')  # 递归删除空目录,若非空,则停止删除
 9 os.mkdir(\'aaa\') # 创建单目录
10 os.rmdir(\'aaa\') #删除单个非空目录
11 print(os.listdir()) # 查看目录内容
12 os.remove() # 删除一个文件
13 os.rename("oldname","newname") # 重命名文件与目录
14 os.stat(\'aaa\\\\1.txt\') # 获取文件的信息
15 print(os.sep) # 输出当前系统的分隔符 win下是‘\\’,linux下是‘/’
16 os.linesep # 输出当前系统的行终止符
17 os.pathsep #输出当前系统的路径分隔符
18 os.system() # 执行系统命令
19 os.name() # 返回系统类型
20 os.environ # 返回环境变量
21 os.path.abspath() # 返回绝对路径
22 os.path.split(\'/aaa/bbb/1.txt\')  # 把路径跟文件名分开
23 os.path.dirname(\'/aaa/bbb/1.txt\')  # 返回文件的所在的路径
24 os.path.basename(\'/aaa/bbb/1.txt\') # 返回文件名
25 os.path.exists(\'/aaa/bbb/1.txt\') #判断目录是否存在
26 os.path.isabs(\'/aaa/bbb/\') # 判断是不是绝对路径
27 os.path.isdir(\'/aaa/bbb/\') # 判断目录是否存在
28 os.path.join([\'aaa\',\'bbb\']) # 合并目录

 

四、sys模块(对python解释器的操作)

1 import sys
2 
3 print(sys.argv) # 以列表的形式返回文件的绝对路径和所传的参数
4 print(sys.argv[0]) # 返回当前文件的绝对路径
5 print(sys.argv[1]) # 返回传入当前文件的第一个参数
6 sys.exit() # 退出程序
7 sys.path # 返回模块路径的环境变量
8 print(sys.platform) # 返回操作系统的名称

五、logging(日志模块)

 logging基本使用:

 1 import logging
 2 
 3 logging.debug("this is debug")
 4 logging.info("this is info")
 5 logging.warning("this is warning")
 6 logging.error("this is error")
 7 logging.critical("this is critical")
 8 
 9 >>>
10     WARNING:root:this is warning
11     ERROR:root:this is error
12     CRITICAL:root:this is critical    

 

  logging模块中的日志级别从小到大分为:

     debug(调试)、info(信息)、warning(警告)、error(错误)以及critical(严重)

  logging模块默认输出warning级别的日志,也可以对日志级别和输出格式进行个性化设置:

import logging

logging.basicConfig(
    level=logging.DEBUG,  # 设置日志输出的界别
    format=\'%(asctime)s - %(filename)s - %(levelname)s - %(message)s\', # 输出日志的格式
    filename="test.log",  # 将日志输出到文件中,如果不加这参数默认是输出到屏幕上
    filemode="a"   # 将日志写入文件的方式,默认为“a”追加,还可以改成“w”写入
)

logging.debug("this is debug")
logging.info("this is info")
logging.warning("this is warning")
logging.error("this is error")
logging.critical("this is critical")

 

%(name)s          Logger的名字
%(levelno)s        数字形式的日志级别
%(levelname)s   文本形式的日志级别
%(pathname)s   调用日志输出函数的模块的完整路径名,可能没有
%(filename)s     调用日志输出函数的模块的文件名
%(module)s       调用日志输出函数的模块名
%(funcName)s    调用日志输出函数的函数名
%(lineno)d         调用日志输出函数的语句所在的代码行
%(created)f        当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d  输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s       字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d         线程ID。可能没有
%(threadName)s   线程名。可能没有
%(process)d        进程ID。可能没有
%(message)s      用户输出的消息        
format的参数及作用

logging高级用法:  

  将日志同时输出到屏幕与文件

 1 logger = logging.getLogger("Adair") # 创建一个logger对象,默认用户为root
 2 logger.setLevel(logging.DEBUG)  # 设置输出日志的级别
 3 
 4 fileoutput = logging.FileHandler("logs.log") # 创建一个用于文件输入的处理器
 5 screenoutput = logging.StreamHandler()  #创建一个用于屏幕输出的处理器
 6 
 7 formatter = logging.Formatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\') # 指定日志格式
 8 
 9 fileoutput.setFormatter(formatter) # 文件输出获取日志格式
10 screenoutput.setFormatter(formatter) # 屏幕输出获取日志格式
11 
12 logger.addHandler(fileoutput)  # 将文件输入处理器添加到logger对象中
13 logger.addHandler(screenoutput) # 将屏幕输出处理器添加到logger对象中
14 
15 logger.debug("this is debug")
16 logger.info("this is info")
17 logger.warning("this is warning")
18 logger.error("this is error")
19 logger.critical("this is critical")
1 http://python.jobbole.com/87300/
2 http://www.cnblogs.com/yuanchenqi/articles/5732581.html
详情参考文档

 六、configparser(解析配置文件模块)

先生成一个配置文件:

 1 import configparser
 2 
 3 config = configparser.ConfigParser() # 创建一个config对象
 4 
 5 config["DEFAULT"] = {
 6     \'ServerType\':\'weblogic\',
 7     \'ServerPort\':\'7001\'
 8 }
 9 config["BACKUP"] = {
10     "BackupType":"Full",
11     "BackupTime":"23:00",
12     "BackupUser":"weblogic"
13 }
14 config["DEPLOY"] = {
15     "DeployType":"incremental",
16     "DeployUser":"webloic"
17 }
18 config["DEFAULT"][\'ServerUrl\'] = "http://127.0.0.1:7922/console"
19 
20 with open(\'config.ini\',\'w\') as configfile:
21     config.write(configfile)

配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section), 每个节可以有多个参数(键=值):

 1 [DEFAULT]
 2 servertype = weblogic
 3 serverport = 7001
 4 serverurl = http://127.0.0.1:7922/console
 5 
 6 [BACKUP]
 7 backuptype = Full
 8 backuptime = 23:00
 9 backupuser = weblogic
10 
11 [DEPLOY]
12 deploytype = incremental
13 deployuser = webloic

 

 配置文件的增删改查:

 1 print(config.sections()) # 获取所有的节,不包括DEFAULT,DEFAULT是特殊的默认节
 2 
 3 print(config.items("BACKUP")) # 获取指定节的值(key:values),输出时DEFAULT默认节也会一同输出
 4 print(config.options("BACKUP")) # 获取指定节的值(key),输出时DEFAULT默认节也会一同输出
 5 
 6 for key in config[\'DEPLOY\']:  # 获取指定节的值(key),输出时DEFAULT默认节也会一同输出
 7     print(key)
 8 
 9 # 获取指定key的value值:
10 print(config[\'DEPLOY\'][\'deploytype\'])
11 print(config.get(\'DEPLOY\',\'deploytype\'))
12 print(config.getint(\'DEFAULT\',\'serverport\'))
13 
14 # 添加
15 config.add_section(\'compile\')
16 config.set(\'compile\',\'CompileType\',\'ant\')
17 config.write(open(\'config.ini\',\'w\'))
18 
19 # 删除
20 config.remove_option(\'DEPLOY\',\'deploytype\')
21 config.remove_section(\'BACKUP\')
22 config.clear() # 清除DEFAULT以外的所有内容
23 config.write(open(\'config.ini\',\'w\'))

 

DEFAULT:

[DEFAULT] 一般包含 ini 格式配置文件的默认项,所以 configparser 部分方法会自动跳过这个 section 。 
前面已经提到 sections() 是获取不到的,还有删除方法对 [DEFAULT] 也无效
但指定删除和修改 [DEFAULT] 里的 keys & values 是可以的:
1 config.remove_option(\'DEFAULT\',\'servertype\')  # 删除DEFAULT中的key
2 config.set(\'DEFAULT\',\'serverport\',\'8080\')  # 修改DEFAULT中指定key的值
3 config.write(open(\'config.ini\',\'w\'))
注:文件中的内容一旦保存在磁盘中,是不会被修改的。所以每次操作动作执行完都要加上config.write(open(\'config.ini\',\'w\'))这一句将之前的文件内容进行覆盖。

七、re模块(正则表达式)

简介:

   正则表达式是一种小型的、用来匹配字符串的高度专业化的编程语言,Python将正则表达式嵌入到了re模块中,方便py粉儿使用。

1  s="hello world"
2  
3  print(s.find(\'or\'))
4  >>>7
5  print(s.replace(\'ll\',\'aa\'))
6  >>>heaao world
7  print(s.split(\' \'))
8  >>>[\'hello\', \'world\']

  字符串自身的方法是完全匹配,而有些场景字符串自身的方法并不能完全满足,比如在一堆人员中过滤出电话号,这时候就需要使用模糊匹配,而正则表达式就是为了提供模糊匹配的一种编程语言。

元字符:有特殊意义的字符

    .   ^  *  +  ?  {  }  [  ]  |  (  )  \\      

 1 import re
 2 s = "My name is Ye xiaohei"
 3 print(re.findall(\'xiaohei\',s)) # findall 以列表的形式输出所有匹配项
 4 >>>[\'xiaohei\']
 5 print(re.findall(\'h.i\',s))  # . 只能匹配一个字符,换行符(\\n)除外
 6 >>>[\'hei\']
 7 print(re.findall(\'^hei\',s)) # ^ 只从开头匹配
 8 >>>[]
 9 print(re.findall(\'hei$\',s)) # $ 只在结尾匹配
10 >>>[\'hei\']
11 print(re.findall(\'xiao*\',\'xiaooooooooo\')) # * 匹配前一个字符的0到多次
12 >>>[\'xiaooooooooo\']
13 print(re.findall(\'hei+\',\'xiaoooheoo\')) # + 匹配前一个字符的1到多次
14 >>>[]
15 print(re.findall(\'xia?o\',\'xiaoooxiooo\')) # ? 匹配0到1次
16 >>>[\'xiao\', \'xio\']
17 print(re.findall(\'xi{5}ao\',\'xiiiiiaoooo\')) # {m} 匹配前一个字符的N次
18 >>>[\'xiiiiiao\']
19 print(re.findall(\'xi{1,3}ao\',\'xiaoooo\')) # {m,n} 匹配前一个字符的m到n次
20 >>>[\'xiao\']
21 print(re.findall(\'[i,o]\',s)) # [] 匹配元字符集中的任意字符
22 >>>[\'i\', \'i\', \'o\', \'i\']
23 print(re.findall(\'\\d{5}\',\'asd230498327843vfeq\')) # \\ 转义字符后边跟普通字符实现特殊功能
24 >>>[\'23049\', \'83278\']
25 print(re.findall(\'\\*\',\'asd2304983*27843vfeq\')) # \\ 转义字符后边跟元字符取消特殊功能
26 >>>[\'*\']
27 print(re.search(\'i\',s)) # search 方法以对象的方式输出匹配的第一项
28 >>><_sre.SRE_Match object; span=(8, 9), match=\'i\'>
 1 print(re.findall(\'a|1\',\'asddsa1321\')) # | “或”的意思,截取管道符左边的或者右边的字符
 2 >>>[\'a\', \'a\', \'1\', \'1\']
 3 print(re.findall(\'(as)+\',\'asasassaasdfasfas\')) # () 分组 括号内的字符为一组,作为整体去匹配
 4 >>>[\'as\', \'as\', \'as\', \'as\']
 5 print(re.findall(\'(as|sa)\',\'asaaadsasaadsa\'))
 6 >>>[\'as\', \'sa\', \'以上是关于python_常用内置模块的主要内容,如果未能解决你的问题,请参考以下文章

第六篇:python基础_6 内置函数与常用模块

python_常用内置模块

python26 封装 多态 常用的内置函数 `__str__` `__del__` 反射 动态导入模块

PYTHON常用模块和包

Python 3.5(常用模块)

day15-python常用内置模块的使用