Python随心记--模块

time时间模块方法
import time
    time.time()   #时间戳
    time.localtime()   #结构化时间 也可以时间戳转为结构化时间
        t = time.localtime()
        print(t.tm_year)
        print(t.tm_wday)
    time.gmtime()
    time.mktime(time.localtime())   #把结构化时间转为时间戳
    time.strftime('%Y-%m-%d %X',time.localtime())   #将结构化时间转为字符串时间  
    time.strptime('2018:12:18:22:11:11','%Y:%m:%d:%X')   #将字符串时间转为结构化时间
    time.asctime()
    time.ctime()
    time.sleep()
datetime时间模块方法
import.datetime
    datetime.datetime.now()
random随机模块
import random
    random.random()
    random.randint(1,6)   #指1-6范围内的数 
    random.randrange(1,6)
    random.choice([11,22,33,44,55,66,77])
    random.sample([11,22,33,44,55,66,77],2)   #随机取两个
    random.uniform(1,5)   #随机浮点数 
    random.shuffle([1,2,3,4,5,6])   #打乱列表顺序 
    #验证码
    import random
    def v_code():
        ret = ''
        for i in range(6):
            num = random.randint(0,9)
            alf = chr(random.randint(65,122))   #字母的ascall
            ret += str(random.choice([num,alf]))
        return ret
    print(v_code())

BASEDIR介绍
__file__   #打印当前执行的路径
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))   #拿到上级目录
sys.path.append(BASE_DIR)   #文件添加执行路劲
os模块
import os
    os.getcwd()   #获取当前工作目录
    os.path()
    os.chdir()   #改变当前工作目录
    os.curdir()   #返回当前目录
    os.pardir()   #获取当前目录的父级目录字符串名
    os.makedirs()   #生成多层递归文件夹
    os.removedirs()   #删除并递归到上一层(有内容不删)
    os.mkdir()   #生成单层文件夹
    os.rmdir()   #生成单层文件夹(有内容不删)
    os.listdir()   #列出文件目录
    os.remove()   #删除文件
    os.rename()   #改名
    os.stat()   #获取文件信息
    os.sep()   #输出操作系统特定的路径分隔符
    os.linesep()   #输出当前平台使用的行终止符
    os.pathsep()   #输出用于分割文件路径的字符串
    os.name()   #输出字符串只是当前使用平台
    os.system   #运行shell命令
    os.environ   #获取系统环境变量
    os.paht.abspath()   #返回path规范化的绝对值
    os.path.split(path)   #将path分割成目录和文件名二元组返回
    os.path.dirname(path)   
    os.path.basename(path)   #返回path最后文件名
    os.path.exists(path)    #如果path存在返回True
    os.isabs(path)   #如果path是绝对路径,但会True
    os.isfile(path)   #如果path是一个存在的 文件返回True
    os.path.isdir(path)   #如果是一个存在目录返回True
    os.path.join(path)   #将多个路径组合拼接并返回
    os.path.getatime()   #返回目录最后一次存取时间
    os.path.getmtime()   #返回目录最后一次修改时间
sys模块

import sys
    sys.exit(n)   #退出程序
    sys.argv   #命令行参数list
    sys.maxint   #最大int值
    sys.path   #返回模块的手速路径
    sys.platform   #返回操作系统平台名称


#进度条
import time
import sys
for i in range(10):
    sys.stdout.write('#')
    time.sleep(1)
    sys.stdout.flush()
json & pickle模块
import json
    json.dumps(dic)
        dic={'name':'aa',}
        print(json.dumps(dic))
    json.loads(dic)
shelve模块
import shelve
    shelve.open(r'shelve')   #将一个字典写入文件
xml模块
import xml.etree.ElementTree as ET
tree = ET.parse('xml_lesson')   #解析xml文件,得到tree对象
root = tree.getroot()
print(root.tag)   #root.tag  打印标签
for i in root:
    # print(i.tag)
    for j in i:
        # print(j.attrib)
        print(j.text)   #取标签的文本内容

for i in root.iter('year'):
    print(i.tag,i.text)

#修改
for i in root.iter('year'):
    new_year = int(i.text)+1
    i.text = str(new_year)
    i.set('update','year')
tree.write('xml_lesson')   #把修改的内容写入原文件

#删除
for i in root.findall('country'):
    rank = int(i.find('rank').text)
    if rank > 50:
        root.remove(i)
tree.write('xml_lesson')   #把修改的内容写入原文件

#创建xml数据
new_xml = ET.Element('namelist')   #创建根节点
name = ET.SubElement(new_xml,'name',attrib={'enumerate':'year'})
age = ET.SubElement(new_xml,'age',attrib={'checkend':'no'})
sex = ET.SubElement(new_xml,'sex')
sex.text = '23'

name2 = ET.SubElement(new_xml,'name',attrib={'enumerate':'year'})
age = ET.SubElement(name2,'age')
age.text = '12'
et = ET.ElementTree(new_xml)   #生成文档对象
et.write('test.xml',encoding='utf-8')

re正则模块
import re
    ret = re.findall('a...n','helloalvin')   # .通配符 匹配已a开头n结尾,中间点的个数带代表字符
    ret = re.findall('^a..n','helloalvin')   #匹配以a开头,中间点的个数带代表字符
    ret = re.findall('a..n$','helloalvin')   #匹配以n结尾的,中间点的个数代表字符
    ret = re.findall('d*','heddlloddddalvin')   #匹配字符串中的d ,*匹配0到无穷次(贪婪匹配)
    ret = re.findall('d+','heddlloddddalvin')   #匹配字符串中的d ,匹配1到无穷次(贪婪匹配)
    ret = re.findall('ed?','heddllodddeddalvin')   #匹配0到1次
    ret = re.findall('ed{0,}','heddllodddeddalvin')   #{0,}表示0到无穷,{1,}表示1到无穷,{1,}表示1到无穷 {0,1}表示0到1次
    ret  = re.findall('abc*?','abcccc')   #惰性匹配(以最少次数匹配)
    ret  = re.findall('a[bc]','abcdc')   #匹配[]里面任意字符跟[]前面字符组合
    ret  = re.findall('q[a*z]','dwqdqasdq')   #匹配[]里面任意字符跟[]前面字符组合
    ret  = re.findall('q[a-z]','quoqz')   # - 指范围 匹配[]里面任意字符跟[]前面字符组合
    ret  = re.findall('q[a-z]*','quoqz')   # - 指范围 匹配[]里面任意字符跟[]前面字符组合
    ret  = re.findall('q[A-Z]*','qu1oq3z')   # - 指范围 匹配[]里面任意字符跟[]前面字符组合
    ret = re.findall('q[^a-z]','q123')   #[^a-z] 非a-z开头的
    ret = re.findall('q[^a-z]','qa123')   #[^a-z] 非a-z开头的
    ret = eval('12+(56*6+5*(5-2))')
    ret = re.findall('\([^()]*\)','12+(56*6+5*(5-2))')
    ret = re.findall('\d+','12+(56*6+5*(5-2))')   #匹配数字
    ret = re.findall('\D+','12+(56*6+5*(5-2))')   #匹配非数字
    ret = re.findall('\s+','hello world')   #匹配空格
    ret = re.findall('\S+','hello world')   #匹配非空格
    ret = re.findall('\w+','hello world_')   #匹配字母数字相当于[a-zA-Z0-9]
    ret = re.findall('\W+','hello world_')   #匹配非字母数字相当于[a-zA-Z0-9]
    ret = re.findall(r'I\b','hello I am LIs')   #匹配一个特殊字符边界 比如空格 &
    ret = re.findall('I\\b','hello I am LIs')
    ret = re.findall('c\\\\l','helloc\lsad')
    ret = re.findall(r'c\\l','helloc\lsad')
    ret = re.findall(r'ka|b','hellocdsbad')   #管道符|
    ret = re.findall(r'ka|b','hellocdska|bad')   #管道符|
    ret = re.findall('(abc)+','abcabcabc')   #分组
    ret = re.search('(?P<name\w+>)','abcabcabc').group()   #分组
    ret = re.search('\d+','abc23abc21abc').group()   #分组
    ret = re.search('(?P<name>[a-z]+>)','alex36wupeiq33').group()   #分组
    ret = re.search('(?P<name>[a-z]+>)\d+','alex36wupeiq33').group('name')   #分组
    ret = re.search('(?P<name>[a-z]+>)(?P<age>\d+>)','alex36wupeiq33').group('age')   #分组
    ret = re.match('a','abc').group()
    ret = re.split('[ab]','abc')   #先按a分割得到''和bcd 在对 ''和 bcd 分别按b分割
    ret = re.sub('\d','g','alvin5yuan6')
    ret = re.sub('\d','g','alvin5yuan6',1)   #1表示前一个
    ret = re.subn('\d','g','alvin5yuan6',1)   #1表示前一个
    ret = re.compile()
    ret = re.finditer()   #返回一个对象
logging模块

import logging
logging.basicConfig(
        level = logging.DEBUG,
        filename = 'logger.log',   #日志存放位置
        filemode= 'w',
        format = '%(asctime)s %(filename)s[%(lineno)d] %(message)s'   #filename:执行文件名 asctime :时间 lineno:所在文件行号 message:错误信息
    )
logging.debug('hello')
logging.info('hello')
logging.warning('warning message')
logging.error('error')
logging.critical('critical message')

def logger():
    logger = logging.getLogger()
    fh = logging.FileHandler('test_log')
    ch = logging.StreamHandler()
    fm = logging.Formatter('%(asctime)s %(message)s')
    fh.setFormatter(fm)
    ch.setFormatter(fm)

    logger.addHandler(fh)
    logger.addHandler(ch)
    logger.setLevel('DEBUG')
    return logger
logger = logger()

logger.debug('hello')
logger.info('hello')
logger.warning('warning message')
logger.error('error')
logger.critical('critical message')

configparser模块
import configparser
config = configparser.ConfigParser()
config['DEFFAULT'] = {
    'ServerAliveInterval':'45',
    'Compression':'yes',
    "Comperssion":'9'
}
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'
config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = '50022'
topsecret['ForwardXll'] = 'no'
config['DEFAULT']['ForwardXll'] = 'yes'
with open('example.ini','w') as f:
    config.write(f)

config = configparser.ConfigParser()

config.read('example.ini')
#-----查-------
print(config.sections())

print('bytebong.com' in config)

print(config['bitbucket.org']['user'])

print(config['DEFFAULT']['serveraliveinterval'])

for i in config['bitbucket.org']:   #会把DEFFAULT下的也拿出来
    print(i)

print(config.options('bitbucket.org'))
print(config.items('bitbucket.org'))
print(config.get('bitbucket.org','compression'))

#------增删改------
config.add_section('yuan')
config.set('yuan','k1','22222')
config.remove_section('yuan')
config.remove_option('DEFAULT','forwardxll')
config.write(open('i.cfg','w'))
hashlib模块
import hashlib
objk = hashlib.md5()   #m = hashlib.sha256
objk = hashlib.sha256()   #m = hashlib.sha256
objk = hashlib.md5('sb'.encode('utf8'))   #加盐

objk.update('heloo'.encode('utf8'))
print(objk.hexdigest())

 

 
 
 
 

 

 

 

 

 

 
 
 
posted @ 2018-12-24 23:21  爱跑步的乌龟  阅读(206)  评论(0编辑  收藏  举报