常用库的导入方法
导入单个库直接使用import,导入某一个库中的某一个方法使用from+库名+import+方法
导入多个库使用import导入,使用都好隔开
#导入单个库
import datetime
print(datetime.date.today())
#2019-08-12
#导入多个库
import time,datetime
print("当前时间:",time.time())
print("当前日期:",datetime.datetime.today())
#当前时间: 1565606461.8743038
#当前日期: 2019-08-12 18:41:01.874304
#导入某一个库中的某一个方法
from datetime import date
print(date.today())
#2019-08-12
Import导包,一般只能导入统一路径下的程序,当程序出现如图所示样式,test程序中,要导入test1程序,会出错,这是因为import导包时,test1不在首选的路径中,(这些路径可以通过sys.path看到),sys.path是一个列表,因此只要把test1添加入这个列表中就行,添加的东西需是两个程序共同的父目录(modulel)。
可以看到test和test1同在modulel这个目录中,因此要拿到modulel这一级目录
os.path.abspath(file):__file__表示当前程序或文件,os.path.abspath().可以拿到本程序的路径。
os.path.dirname(os.path.abspath(file)):拿到当前文件的父目录
os.path.dirname(os.path.dirname(os.path.abspath(file))):找到modulel这一级目录(也就是test程序和test1共同的目录)
最后把拿到的目录插入sys.path列表中。
此时,再导入test1时,程序正常运行。
常用库
时间模块(time)
'''时间模块(time)'''
import time
time.sleep(3)
print("*****************")
#*****************(停止三秒打印)
print(time.time()) #记录当前时间
#1565607366.0830739
print(time.localtime()) #详细记录当前时间
#time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=18, tm_min=56, tm_sec=45, tm_wday=0, tm_yday=224, tm_isdst=0)
print(time.timezone) #时区
#-28800
print(time.daylight) #夏令时
#0
time.sleep(3) #程序停止几秒
print(time.gmtime())
#time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=10, tm_min=58, tm_sec=29, tm_wday=0, tm_yday=224, tm_isdst=0)
x=time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S",x))
#2019-08-12 18:59:09
import datetime
print(datetime.date)
print(datetime.time)
print(datetime.datetime)
'''
<class 'datetime.date'>
<class 'datetime.time'>
<class 'datetime.datetime'>
'''
# 获取当前时间
print(datetime.datetime.now())
print(datetime.datetime.now()+datetime.timedelta(5))
print(datetime.datetime.now()+datetime.timedelta(hours=5))
print(datetime.datetime.now()+datetime.timedelta(minutes=5))
'''
2019-08-12 18:53:45.603785
2019-08-17 18:53:45.603785
2019-08-12 23:53:45.603785
2019-08-12 18:58:45.603785
'''
随机模块(random)
'''随机数模块(random)'''
import random
print(int(random.random()*10))
#0
print(random.randint(1,5)) #取随机数包括1和5
#1
print(random.randrange(1,2)) #取随机数不包括2
#1
print(random.choice(["1","s","d","db"])) #从该对象中随机获取一个元素, 该对象可以是元组,列表,集合
#s
print(random.sample("jfsdihihfis",3)) #从字符串中随机获取
#['s', 'f', 'j']
print(random.uniform(1,5)) #随机获取浮点型
#2.8336718804871373
l=[4,5,8,7,6,1]
random.shuffle(l)
print(l) #将l中元素重新洗牌
#[4, 5, 6, 1, 8, 7]
sys模块
#sys.argv 获取当前正在执行的命令行参数的参数列表(list)
import sys
print(sys.argv[0])
print("------")
for i in sys.argv:
print(i)
#------
#sys.modules.keys() 返回所有已经导入的模块列表
#sys.platform 获取当前执行环境的平台
#sys.path path是一个目录列表,供Python从中查找第三方扩展模块。
#sys.exit(n) 调用sys,exit(n)可以中途退出程序,sys.exit(0)表示正常退出,n不为0时,会引发SystemExit异常,从而在主程序中可以捕获该异常。
#sys.version 获取python解释程序的版本信息。
#sys.stdin, sys.stdout, sys.stderr 标准输入,标准输出,错误输出。
#
正则模块(re)
'''re模块'''
import re
# re.match() #只能从前端开始
res=re.match("^slg\d+46","slg45643134646") #^表示从头开始
print(res) #\d表示数字,+表示多个
print(res.group())
'''
<re.Match object; span=(0, 14), match='slg45643134646'>
slg45643134646
'''
res=re.match("^.+","dsjdsd456434643") #.表示任意字符
print(res.group())
#dsjdsd456434643
res=re.match("\d+3","1563532434314179")
print(res.group())
#15635324343
#$从后端开始
res=re.search("8$","hsdkhsdjb564368") #判断是否以8结尾
print(res)
#<re.Match object; span=(14, 15), match='8'>
res=re.search("#[a-z]+#","dhfbsj#hellow#45") #匹配a到z中的#--#之间的字符
print(res)
#<re.Match object; span=(6, 14), match='#hellow#'>
res=re.search("l?","ufdsdfklshfllsfhbfsh2456") #匹配0次或者1次
print(res)
#<re.Match object; span=(0, 0), match=''>
res=re.search("[0-9]{1,3}","164646df4s6f46s4f") #匹配1次或者2次或者3次
print(res)
#<re.Match object; span=(0, 3), match='164'>
res=re.findall("A[a-z]{4}l","AsdifldfsAksdjlndskn5") #将匹配到的放到一个列表中
print(res)
#['Asdifl', 'Aksdjl']
a="ABCDfsdfKHKJabcdhdfshkjhk"
res=re.findall("ABC|abc",a)
print(res)
#['ABC', 'abc']
a="abcabcbabcabababa"
res=re.findall("(ab){2}",a)
print(res)
#['ab']
res=re.findall("ab\|","ab|abc") #|为特殊字符,需要用\转义
print(res)
#['ab|']
s="abcab12345slg@25312$"
res=re.search("(?P<id>[0-9]+)(?P<name>[a-z]+)",s)
print(res.group())
print(res.groupdict())
'''
12345slg
{'id': '12345', 'name': 'slg'}
'''
res=re.split("[0-9]+","as22h3dj41sf56bh89fj9vj05vf5av") #用数字分割
print(res)
#['as', 'h', 'dj', 'sf', 'bh', 'fj', 'vj', 'vf', 'av']
res=re.sub("[0-9]","|","as22h3dj41sf56bh89fj9vj05vf5av") #用|替换数字
print(res)
#as||h|dj||sf||bh||fj|vj||vf|av
res=re.findall("[a-z]+d$","abcd\ndfhds\nthrid",flags=re.M) #多行模式,改变^和$的行为
print(res)
#['abcd', 'thrid']
res=re.search(".+","hjjf\ngdvsh\ndsf\nssdff",flags=re.S) #匹配任意字符(包括\n)
print(res)
#<re.Match object; span=(0, 20), match='hjjf\ngdvsh\ndsf\nssdff'>
'''所有的均可以用.*?'''
a=" 在<h1>和</he2>之间"
res=re.findall("<.*?>",a)
print(res)
#['<h1>', '</he2>']
os模块
'''os模块'''
import os
print(os.getcwd()) #获取当前目录
os.chdir(r"c:/") #切换当前目录
os.chdir(r"D:\学习\.idea\陕理工")
print(os.getcwd())
#返回当前目录
print(os.curdir) #当前目录
print(os.pardir) #上一级目录
os.makedirs(r"d:/QQQ/aA") #逐级创建文件
os.removedirs(r"d:/QQQ/aA") #逐级删除文件
os.mkdir(r"d:\QQQ\aA\dash") #逐级创建文件
os.rmdir() #删除单级目录
print(os.listdir(".")) #查找当前目录下的所有文件
print(os.listdir("..")) #返回指定目录下的所有文件和目录名
os.remove("file") #删除一个文件
os.rename(r"d:\QQQ\WQE",r"d:\md\dk") #重命名文件
print(os.stat(r"file.txt")) #输出该文件的属性
print(os.sep)
# 输出系统的转位符win--\,\\ Linux--/ 显示当前平台下路径分隔符
print(os.linesep) #给出当前平台使用的行终止符
print(os.pathsep)
print(os.environ) #获取系统环境变量
print(os.name) #Linux---posix
os.system("dir") #运行shell命令,注意:这里是打开一个新的shell,运行命令,当命令结束后,关闭shell
print(os.path.dirname(__file__)) #路径名称
print(os.path.isfile()) #判断是否是一个文件
os.path.isdir() #当前路径
# os.path.isabs() #绝对路径
print(os.join(r"d:",r"\aaa'txt")) #文件地址拼接
print(os.path.getatime("file.txt")) #获取最后储存时间