zoukankan      html  css  js  c++  java
  • python内置常用模块

    1.time模块

     1 import time
     2 #时间戳
     3 print(time.time())
     4 #时间结构
     5 print(time.localtime())#本地时间
     6 print(time.gmtime())#世界时间
     7 #字符串时间
     8 print(time.asctime())
     9 # 直接显示字符串时间
    10 import datetime
    11 print(datetime.datetime.now())
    12 #结构时间转化为自定义字符串时间
    13 print(time.strftime("%Y-%m-%d %X",time.localtime()))
    14 #字符串时间转化为结构时间
    15 print(time.strptime("2019-12-12 15:15:15","%Y-%m-%d %X"))
    16 #结构时间转化为时间戳
    17 print(time.mktime(time.localtime()))
    18 结果:
    19 时间戳:1544097660.9399388
    20 时间结构:本地——>time.struct_time(tm_year=2018, tm_mon=12, tm_mday=6, tm_hour=20, tm_min=1, tm_sec=0, tm_wday=3, tm_yday=340, tm_isdst=0)
    21 世界时间——>time.struct_time(tm_year=2018, tm_mon=12, tm_mday=6, tm_hour=12, tm_min=1, tm_sec=0, tm_wday=3, tm_yday=340, tm_isdst=0)
    22 字符串时间:Thu Dec  6 20:01:00 2018
    23 直接显示字符串时间:2018-12-06 20:01:00.941933
    24 结构时间转化为自定义字符串时间:2018-12-06 20:01:00
    25 字符串时间转化为结构时间:time.struct_time(tm_year=2019, tm_mon=12, tm_mday=12, tm_hour=15, tm_min=15, tm_sec=15, tm_wday=3, tm_yday=346, tm_isdst=-1)
    26 结构时间转化为时间戳:1544097660.0
    time

     2.random模块

     1 import random
     2 #(0,1)随机浮点数
     3 res = random.random()
     4 print(res)
     5 #[1,2]指定范围的随机浮点数
     6 res = random.uniform(1,2)
     7 print(res)
     8 #[1,2]随机整形
     9 res = random.randint(1,2)
    10 print(res)
    11 #[1,2)随机整形
    12 res = random.randrange(1,2)
    13 print(res)
    14 #列表中的元素随机取一个值
    15 res = random.choice([11,22,33,44,55])
    16 print(res)
    17 #列表中的元素随机取几个值
    18 res = random.sample([11,22,33,44,55],3)
    19 print(res)
    random

    3.os模块

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

    4.sys模块

    1 import time
    2 import sys
    3 # sys.argv   在python解释器上执行py文件时直接输入参数可以用列表方式取值
    4 
    5 for i in range(0,10):
    6     sys.stdout.write("#")#不是直接显示,先放在缓存,放完之后显示
    7     time.sleep(0.1)
    8     sys.stdout.flush()#刷新缓存
    9 print(sys.exit(1))#返回0时表示文件正常结
    sys

    5.json模块

     1 import json
     2 dic = {"name":"ailadi"}
     3 f = open("new.txt","w")
     4 dic=json.dumps(dic)
     5 f.write(dic)    #将数据转化为字符串模式——————>   s = json.dump(dic,f)    只适用于文件
     6 
     7 f = open("new.txt","r")
     8 s = f.read()
     9 s = json.loads(s)    #将读出的数据提取格式  ————>  s = json.load(f)    只适用于文件
    10 print(type(s))
    json

    6.pickle模块

     1 """以字节的方式读写,支持类和函数"""
     2 dic = {"name":"ailadi"}
     3 import pickle
     4 with open("new_pickle","wb") as f:
     5     dic = pickle.dumps(dic)
     6     f.write(dic)     #------->pickle.dump(dic,f)
     7 with open("new_pickle","rb") as f:
     8     s = f.read()
     9     print(s)
    10     s = pickle.loads(s)    #----->s = pickle.load(f)
    11     print(s)
    pickle

    7.shelve模块

     1 """存取字典"""
     2 import shelve
     3 f = shelve.open(r"shelve.txt")
     4 
     5 #
     6 # f["name"] = "ailadi"
     7 # f.close()
     8 
     9 #
    10 # print(f["name"])
    11 # f.close()
    shelve

    8.XML模块

     1 """
     2 XML
     3 teg:对象
     4 attrib:属性
     5 text:内容
     6 """
     7 #遍历
     8 import xml.etree.ElementTree as ET
     9 tree = ET.parse("xml_text")
    10 root = tree.getroot()
    11 for i in root:
    12     print(i.tag)  #查看根节点的对象
    13     print(i.attrib)  #查看根节点的对象属性
    14     print(i.text)  #查看根节点的对象内容
    15     for j in i:
    16         print(j.tag)  #查看对象中的对象
    17         print(j.attrib)  #查看属性
    18         print(j.text)  #查看内容
    19 
    20 
    21 #只遍历yesr节点
    22 import xml.etree.ElementTree as ET
    23 tree = ET.parse("xml_text")
    24 root = tree.getroot()
    25 for i in root.iter("year"):
    26     print(i.attrib,i.text)
    27 
    28 #修改
    29 import xml.etree.ElementTree as ET
    30 tree = ET.parse("xml_text")
    31 root = tree.getroot()
    32 for i in root.iter("year"):  #在内存中修改
    33     i.text = "2018"
    34     i.attrib = {"updated":"no"}
    35 tree.write("xml_text")  #写入硬盘
    36 
    37 #删除
    38 import xml.etree.ElementTree as ET
    39 tree = ET.parse("xml_text")
    40 root = tree.getroot()
    41 for country in root.findall("country"):
    42     ret = int(country.find('year').text)
    43     print(ret)
    44     if ret == 2019:
    45         root.remove(country)
    46 tree.write("xxxxxxxxxxxxxxxxxx")
    47 
    48 
    49 
    50 import xml.etree.ElementTree as ET
    51 
    52 new_xml = ET.Element("namelist")  #创建根节点
    53 
    54 name = ET.SubElement(new_xml, "name", attrib={"enrolled": "yes"})  #在根节点下创建子节点
    55 age = ET.SubElement(name, "age", attrib={"checked": "no"})  #在子节点下创建
    56 sex = ET.SubElement(name, "sex")
    57 age.text = "18"  #进行文本赋值
    58 sex.text = '33'
    59 name2 = ET.SubElement(new_xml, "name", attrib={"enrolled": "no"})
    60 age = ET.SubElement(name2, "age")
    61 age.text = '19'
    62 
    63 et = ET.ElementTree(new_xml)  # 生成文档对象
    64 et.write("test.xml", encoding="utf-8", xml_declaration=True)
    65 
    66 ET.dump(new_xml)  # 打印生成的格式
    XML

    9.re模块

    元字符之. ^ $ * + ? { }

    . ^ $ * + ? { }

    元字符之字符集[]:

     1 ret=re.findall('a[bc]d','acd')
     2 print(ret)#['acd']
     3  
     4 ret=re.findall('[a-z]','acd')
     5 print(ret)#['a', 'c', 'd']
     6  
     7 ret=re.findall('[.*+]','a.cd+')
     8 print(ret)#['.', '+']
     9  
    10 #在字符集里有功能的符号: - ^ 
    11  
    12 ret=re.findall('[1-9]','45dha3')
    13 print(ret)#['4', '5', '3']
    14  
    15 ret=re.findall('[^ab]','45bdha3')
    16 print(ret)#['4', '5', 'd', 'h', '3']
    17  
    18 ret=re.findall('[d]','45bdha3')
    19 print(ret)#['4', '5', '3']
    []

    元字符之转义符

      反斜杠后边跟元字符去除特殊功能,比如.
      反斜杠后边跟普通字符实现特殊功能,比如d

      d  匹配任何十进制数;它相当于类 [0-9]。
      D 匹配任何非数字字符;它相当于类 [^0-9]。
      s  匹配任何空白字符;它相当于类 [ fv]。
      S 匹配任何非空白字符;它相当于类 [^ fv]。
      w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
      W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
        匹配一个特殊字符边界,比如空格 ,&,#等

    元字符之分组()

    1 m = re.findall(r'(ad)+', 'add')
    2 print(m)
    3  
    4 ret=re.search('(?P<id>d{2})/(?P<name>w{3})','23/com')
    5 print(ret.group())#23/com
    6 print(ret.group('id'))#23
    ()

    元字符之|

    1 #或(|)
    2 ret=re.search('(ab)|d','rabhdg8sd')
    3 print(ret.group())#ab
    |
     1 ret = re.findall(r"(ab)|(cd)","abcdxxxabxxxcd")
     2 print(ret)  #[('ab', ''), ('', 'cd'), ('ab', ''), ('', 'cd')]
     3 ret = re.findall(r"(ab)|cd","abcdxxxabxxxcd")
     4 print(ret)  #['ab', '', 'ab', '']
     5 ret = re.findall(r"ab|(cd)","abcdxxxabxxxcd")
     6 print(ret)  #['', 'cd', '', 'cd']
     7 ret = re.findall(r"ab|cd","abcdxxxabxxxcd")
     8 print(ret)  #['ab', 'cd', 'ab', 'cd']
     9 ret = re.findall(r"(ab|cd)","abcdxxxabxxxcd")
    10 print(ret)  #['ab', 'cd', 'ab', 'cd']
    添加()|用法

    re模块下的常用方法

     1 import re
     2 #1
     3 re.findall('a','alvin yuan')    #返回所有满足匹配条件的结果,放在列表里
     4 #2
     5 re.search('a','alvin yuan').group()  #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
     6                                      # 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
     7  
     8 #3
     9 re.match('a','abc').group()     #同search,不过尽在字符串开始处进行匹配
    10  
    11 #4
    12 ret=re.split('[ab]','abcd')     #先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
    13 print(ret)#['', '', 'cd']
    14  
    15 #5
    16 ret=re.sub('d','abc','alvin5yuan6',1)
    17 print(ret)#alvinabcyuan6
    18 ret=re.subn('d','abc','alvin5yuan6')
    19 print(ret)#('alvinabcyuanabc', 2)
    20  
    21 #6
    22 obj=re.compile('d{3}')
    23 ret=obj.search('abc123eeee')
    24 print(ret.group())#123
    常用方法
    1 import re
    2 
    3 ret=re.findall('www.(baidu|oldboy).com','www.oldboy.com')
    4 print(ret)  #['oldboy']     这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可
    5 
    6 ret=re.findall('www.(?:baidu|oldboy).com','www.oldboy.com')  # ?: 取消权限符号
    7 print(ret)  #['www.oldboy.com']
    补充
     1 import re
     2 
     3 print(re.findall("<(?P<tag_name>w+)>w+</(?P=tag_name)>","<h1>hello</h1>"))
     4 #运行结果['h1']
     5 print(re.search("<(?P<tag_name>w+)>w+</(?P=tag_name)>","<h1>hello</h1>").group('tag_name'))
     6 #运行结果<re.Match object; span=(0, 14), match='<h1>hello</h1>'>
     7 print(re.search("<(?P<tag_name>w+)>w+</(?P=tag_name)>","<h1>hello</h1>").group('tag_name'))
     8 #运行结果h1
     9 print(re.search(r"<(w+)>w+</1>","<h1>hello</h1>"))
    10 #运行结果<re.Match object; span=(0, 14), match='<h1>hello</h1>'>
    补充

    10.logging模块

     1 """定义一个logger函数"""
     2 def logger():
     3     import logging
     4     logger = logging.getLogger()  #添加根
     5 
     6     fh = logging.FileHandler("message.txt")  #添加日志文件路径
     7 
     8     fm = logging.Formatter('%(asctime)s %(name)s %(message)s [%(lineno)d]')  #输出日志的格式和内容
     9 
    10     #添加信息
    11     fh.setFormatter(fm)
    12     logger.addHandler(fh)
    13     #设置日志输出的等级
    14     logger.setLevel(logging.DEBUG)
    15     return logger
    16 
    17 #调用logger函数
    18 logger = logger()
    19 
    20 #添加日志输出的内容
    21 logger.debug('bebug massage')
    22 logger.info('info massage')
    23 logger.warning('warning massage')
    24 logger.error('error massage')
    25 logger.critical('bebug massage')
    logging

    11.configparse模块

     1 import configparser
     2 config = configparser.ConfigParser()
     3 config["DEFAULT"] = {'ServerAliveInterval': '45',
     4                       'Compression': 'yes',
     5                      'CompressionLevel': '9'}
     6 config['bitbucket.org'] = {}
     7 config['bitbucket.org']['User'] = 'hg'
     8 config['topsecret.server.com'] = {}
     9 topsecret = config['topsecret.server.com']
    10 topsecret['Host Port'] = '50022'     # mutates the parser
    11 topsecret['ForwardX11'] = 'no'  # same here
    12 config['DEFAULT']['ForwardX11'] = 'yes'
    13 with open('example.ini', 'w') as configfile:
    14    config.write(configfile)  #写入文件
    configparse

    12.hashlib模块

     1 import hashlib
     2 
     3 s = hashlib.md5("alvin".encode('utf8'))  #加盐值
     4 s.update("hello".encode('utf8'))  #加密
     5 print(s.hexdigest())
     6 
     7 import hmac
     8 
     9 h = hmac.new('alvin'.encode('utf8'))
    10 h.update('hello'.encode('utf8'))
    11 print(h.hexdigest())
    hashlib
  • 相关阅读:
    圣诞节快乐 | 圣诞特效来了!!
    前端特效demo | 值得收藏的6个 HTML5 Canvas 实用案例
    前端特效demo | 一起围观 10 种创意时钟
    即学即用,轻松搞定这些选择器!(下)
    架构师究竟要不要写代码?
    偷懒秘诀之变量篇
    弹幕,是怎样练成的?
    [C++]模板类和模板函数
    [C++]typedef用法
    [面试]CVTE 2019提前批 Windows应用开发一面
  • 原文地址:https://www.cnblogs.com/ailadi/p/10078063.html
Copyright © 2011-2022 走看看