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())