9-常见的模块

一、time模块   (时间模块)       

import time

(1)时间戳    time.time()   单位:秒      可用于计算时间差【同于计时】

print(time.time())  #1545200798.042592  从1970到现在的秒数

(2)结构化时间  time.localtime()   时间结构

print(time.localtime())  #time.struct_time(tm_year=2018, tm_mon=12, tm_mday=19, tm_hour=14, tm_min=30, tm_sec=47, tm_wday=2, tm_yday=353, tm_isdst=0)

类似于:结构体

t=time.localtime()
print(t.tm_year) #2018
print(t.tm_mon)  #12

(3)将结构化时间转换为时间戳     time.mktime() 

print(time.mktime(time.localtime())) #1545201318.0

(4)将结构化时间转换为字符串时间   time.strftime()

print(time.strftime("%Y-%m-%d %X",time.localtime()))  #2018-12-19 14:37:02

(5)time.sleep(seconds)  休眠

time.sleep(5)  #休眠5秒

二、random模块     (随机模块)  

import random

(1)random.random()      提供0-1的随机浮点数

print(random.random())  #0.5572036085768001

(2)random.uniform(n,m)     提供n到m之间的任意浮点数

print(random.uniform(2,9))  #6.404610948366978

(3)random.randint(n,m)     提供n,n+1,n+2,......m这些数中的随机数,包括n和m

print(random.randint(1,9))   #3

(4)random.randrange(n,m)   提供n,n+1,n+2,......m这些数中的随机数,只包括n

print(random.randrange(1,9))  #6

(5)random.choice(可迭代对象)     随机选择可迭代对象中的某一个数

print(random.choice([1,'dhsj',9,'&*']))  #&*

(6)random.sample(可迭代对象,n)   随机选择可迭代对象中的n个数

print(random.sample([1,'dhsj',9,'&*'],3))  #['&*', 1, 'dhsj']

(7)random.shuffle()   打乱次序

a=[1,'dhsj',9,'&*']
random.shuffle(a)
print(a)  #['&*', 1, 9, 'dhsj']

小例子,随机生成6位数验证码

import random
def code():
    res=''
    for i in range(6):
        num=random.randint(0,9)
        alf=chr(random.randint(65,122))
        s=str(random.choice([num,alf]))
        res=res+s
    return res
print(code())   #X491hV

三、os模块   

import os

__file__  表示该文件的位置

print(__file__)     #E:/000博客文章的代码/00test/博客.py

注:其实__file__代表的是  博客.py,前面的是pycharm自己加的

(1)os.path.diirname(path)   获取当前文件的上一级目录

print(os.path.dirname(__file__))  #E:/000博客文章的代码/00test

(2)os.path.abspath(文件名,后缀)  获取该文件的绝对路径

print(os.path.abspath('test.py'))  #E:\000博客文章的代码\00test\test.py

(3)os.getcwd()   获取当前目录,即当前脚本工作的目录路径

print(os.getcwd()) #E:\000博客文章的代码\00test

(4)os.curdir     返回当前目录      os.pardir    获取当前目录的父目录字符串名

print(os.curdir)  #结果显示  .
print(os.pardir)  #结果显示  ..

(5)os.listdir('dirname')   列出指定目录下的所有文件和子目录,包含隐藏文件,并以列表方式打印

print(os.listdir('D:/'))  
#结果显示    ['$RECYCLE.BIN', 'adobe', 'Anaconda3-4.2.0-Windows-x86_64.exe', 'ARC', 'arcgis route', 'arcgis破解版', 'C#2012 route', 'CAJViewer', 'ENDNOTEx7', 'ENDNOTEx7.rar', 'ENVI route', 'ENVI5.3 SP1', 'Favorites', 'googleupdatesetup-2-.exe', 'graphviz-2.38.msi', 'libsvm-3.22', 'MATLAB route', 'Matlab2016', 'Mozilla Firefox', 'MySQL5.6.40安装包', 'office 2016', 'office 2016 route', 'Office Visio 2013', 'Office Visio 2013 route', 'office2016注册机.zip', 'PDF', 'PDF route', 'platform-tools_r28.0.1-windows', 'platform-tools_r28.0.1-windows.zip', 'PlotPlayer route', 'PotPlayerSetup_1.7.12845.0_XiaZaiBa.zip', 'Pycharm安装包', 'Pychram', 'QQ', 'QQ浏览器', 'R', 'R-3.4.4-win.exe', 'RStudio-1.1.442.exe', 'SunloginClient9.8.exe', 'System Volume Information', 'tesseract-ocr-setup-3.05.01.exe', 'VS2012_ULT_chs', 'VS2013_RTMULT_CHS', '冰点文库下载.rar', '微信', '搜狗输入法', '百度云盘', '谷歌地球 Google Earth.exe', '谷歌浏览器']

(6)os.reomve()   删除一个文件

(7)os.stat('path/filename')   获取文件目录信息

(8)os.path.dirname(path)   返回path的目录      os.path.basename(path)  返回path最后的文件名

route='E:/000博客文章的代码/00test/博客.py'
print(os.path.dirname(route))  #E:/000博客文章的代码/00test
print(os.path.basename(route)) #博客.py

(9)os.path.exists(path)     如果path存在,返回True,否则返回false           【用的较多!!!!】

(10)os.path.join(path1 [path2 [path3,......]])    将多个路径组合返回,第一个绝对路径之前参数将被忽略

path1=r'E:\讲课学习'
path2=r'自学文档\test.py'
print(os.path.join(path1,path2))  #E:\讲课学习\自学文档\test.py

四、sys模块   

import sys

(1)sys.path    返回模块的搜索路径

(2)sys.argv    命令行参数list,第一参数是程序本身的路径

(3)进度条的显示   sys.stdout.write('#')     百分比怎么加?------>分子/分母

#效果就是:每隔1秒中就显示一个#

import sys
import time
for i in range(10):
    sys.stdout.write('#')
    time.sleep(1)
    sys.stdout.flush()   #刷新

结果显示:##########     【每隔1秒钟显示一个#】

五、json和pickle模块   

import json       /         import pickle

补充:eval内置方法,可以将一个字符串转换成python对象

(1)json.dumps(输入)   将  输入  转换成字符串,要求是“ ”  【因为json只认识“ ”】(双引号有用,单引号没用!!!)

import json
dic={"name":"psy"}
data=json.dumps(dic)
print(data)         #{"name": "psy"}
print(type(data))   #<class 'str'>

单引号/双引号的问题

import json
s='hello'
data=json.dumps(s)
print(data)         #"hello"
print(type(data))   #<class 'str'>

(2)json.loads()   将json格式的数据数据转换为字符串----->【爬虫中常用!!

(3)pickle模块和json模块使用方法一模一样,通常都是使用json模块

注唯一差别:pickle.dumps(输入)  将  输入 转换成‘bytes’字节

六、shelve模块   XML模块

注:json pickle shelve XML都是用于数据交换,但是最常用的还是json模块

七、re模块   (模糊匹配)【元字符+6各函数】

import re

元字符:

(1).   什么都可以匹配,除了\n,每次匹配一个

res=re.findall('p..y','wbdadhkjpasyk')
print(res)  #['pasy']

(2)^    在字符开头匹配

res=re.findall('^p..y','wbdadhkjpasyk')
print(res)  #[]

(3)     在字符串末尾匹配

res=re.findall('p..y$','wbdadhkjpasy')
print(res)  #['pasy']

(4)*  匹配0-无穷次的内容            (5) +  匹配1-无穷次的内容         (6)   匹配0,1次内容     (7)  .*?    最小匹配

res1=re.findall('psy*','wpsnpsypsy')
print(res1)  #['ps', 'psy', 'psy']

res2=re.findall('d*','wdnddsddd')
print(res2)  #['', 'd', '', 'dd', '', 'ddd', '']

---间隔线

res1=re.findall('psy+','wpsnpsypsy')
print(res1)  #['psy', 'psy']

res2=re.findall('d+','wdnddsddd')
print(res2)  #['d', 'dd', 'ddd']

---间隔线

res1=re.findall('psy?','wpsnpsypsy')
print(res1)  #['ps', 'psy', 'psy']

res2=re.findall('d?','wdnddsddd')
print(res2)  #['', 'd', '', 'd', 'd', '', 'd', 'd', 'd', '']

(8)[]    字符集,对单个字符给出取值范围

res1=re.findall('k[ab]','acndkabk')
print(res1)  #['ka']

res2=re.findall('k[a-z]','akvndkabk')
print(res2)  #['kv', 'ka']

res3=re.findall('k[^az]','akvndkabk')
print(res3)   #['kv']

(9){}   比如{m}指 扩展前一个字符m次     {m,n}扩展前一个字符m至n次,包括n次

res1=re.findall('ab{2}','abwoabbniabbbbb')
print(res1)  #['abb', 'abb']

(10)\d    数字[0-9]

(11)\w   单词字符[A-Za-z0-9]

注:(10)和(11)常用         其中\转义字符

res1=re.findall(r'e\\l','pase\l')
print(res1)  #['e\\l']

函数:

例:   re.findall(pattern,string,flags=0)     别的方法传入参数也相同

其中:pattern正则表达式的字符串或原生字符串表示          string待匹配字符串         flags正则表达式使用时的控制标记

(1)re.findall()  返回所有满足匹配条件的结果,放在列表中

res=re.findall('p','pansy_pay_whp')
print(res)  #['p', 'p', 'p']

(2)re.search()  在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象,利用group()提取值

res=re.search('p','pansy_pay_whp')
print(res)  #<_sre.SRE_Match object; span=(0, 1), match='p'>
print(res.group()) #p

(3)re.match()  在一个字符串的起始位置起匹配正则表达式,返回match对象

res=re.match('p','pansy_pay_whp')
print(res)  #<_sre.SRE_Match object; span=(0, 1), match='p'>
print(res.group()) #p

(4)re.split() 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型

res=re.split('p','pansy_pay_whp')
print(res)  #['', 'ansy_', 'ay_wh', '']

(5)re.sub()  在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

res=re.sub('p','k','pansy_pay_whp')
print(res)  #kansy_kay_whk

(6)re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

res=re.finditer('p','pansy_pay_whp')
print(res)  #<callable_iterator object at 0x0000018AFC41E080>
print(next(res).group()) #p
print(next(res).group()) #p
print(next(res).group()) #p
print(next(res).group())  #超出边界,报错:StopIteration

(7)re.compile()

注:(1)-(6)是用来处理字符串的。compile()方法可以将正则字符串编译成正则表达式对象,以便在后面的匹配中重复使用

content1='2018-1-20 23:12'
content2='2018-5-20 00:00'
content3='2018-12-2 13:14'
pattern=re.compile('\d{2}:\d{2}')
res1=re.sub(pattern,'',content1)
res2=re.sub(pattern,'',content2)
res3=re.sub(pattern,'',content3)
print(res1,res2,res3)   #2018-1-20  2018-5-20  2018-12-2

PS:别的模块就不加多说了,比如:configparse模块;logging模块;hashlib模块..

转载于:https://my.oschina.net/pansy0425/blog/2990543

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值