1、模块的介绍:
py文件就是一个模块
2、模块的分类:内置模块:python标准库 200
第三方模块
自定义模块
3、为什么学习模块?
开发效率高,内置函数和模块
减少重复代码,分文件管理,有助于修改和维护
4、怎么使用模块?
import 导入
5、导入时发生的事情?
#1、将模块存储到当前名称空间中
#2、以模块的名字命名,并开辟空间。
#3、通过模块名来使用模块中的功能
#4、from 模块名 impor 功能
6、查看全局:
print(globals())
7、as 临时起别名aa:
from lib import login,register,a as aa
8、同一个模块写多次导入只执行一次:
9、相对路径导入: import 导入
from lib import login,register,a as aa
10、绝对路径导入:先通过sys模块添加路径:sys.path.append("C:\我的代码\day13")
其他路径有异常时记得添加r转义:sys.path.append(r"C:\Users\zd\Desktop")
11、查看pycharm预置的模块: import sys
print(sys.modules)
12、模块查找顺序: 内存
内置
sys.path
13、定义启动接口: if __name__ == '__main__':
开发自己用、用于测试
login()
14、查看原生态:print(repr(__name__))
15、在当前文件中执行__name__获取的值是'__main__'
在当前文件被当做模块导入时,__name__获取的是当前文件名
16、import和from的对比:import是全部导入
from是指定功能导入
都支持as
from可以一行导入多个功能
import建议一行导入一个模块
12、time时间模块
time模块中对于时间可以分成三种形式:
- 时间戳: 通常的叫法,时间戳表示的是格林尼治时间是从1970年1月1日00:00:00开始按秒计算的偏移量。这个是实时变化的。我们运行“type(time.time())”,返回的是float类型
- 格式化字符串时间: 格式化的时间字符串(Format String): ‘1999-12-06’
- 结构化时间:元组(struct_time) struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
- 时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
时间模块我们就是学会如何获取当前的时间,以及三种时间之间的转化就行了。
#1、time.time打印当前系统时间并转做浮点表达式--时间戳(1970-当前时间经过的秒数、1970Unix诞辰
import time
print(time.time())
#2、time.sleep休眠
print(time.sleep(1))
#3、将时间戳转换成结构化时间用localtime:
import time
print(time.localtime(time.time()))
结果:time.struct_time(tm_year=2019, tm_mon=10, tm_mday=15, tm_hour=21, tm_min=30, tm_sec=7, tm_wday=1, tm_yday=288, tm_isdst=0)
#4、结构化的时间转换成时间戳用mktime:
print(time.mktime(time.localtime()))
结果:1571146525.0
#5、将结构化时间转成字符串时间用strftime:
print("当前时间是",time.strftime("%Y-%m-%d %X",time.localtime()))
结果:当前时间是 2019-10-15 21:32:41
#6、将字符串时间转化成结构化时间用strptime:
print(time.strptime("2016:12:24:17:50:36","%Y:%m:%d:%X"))
结果:time.struct_time(tm_year=2016, tm_mon=12, tm_mday=24, tm_hour=17, tm_min=50, tm_sec=36, tm_wday=5, tm_yday=359, tm_isdst=-1)
#7、
time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
#8、
time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串
9、打印当前时间年月日、时分秒
print(time.strftime("%Y-%m-%d %X",time.localtime()))
结果:2019-10-16 00:19:30
datetime模块:
打印当前时间用datetime.now:
from datetime import datetime
print(datetime.now())
结果:2019-10-16 00:29:04.837219
指定时间用datetime:
from datetime import datetime
print(datetime(2019,1,1))
结果:2019-01-01 00:00:00
时间戳转换成对象:
from datetime import datetime
import time
print(datetime.fromtimestamp(time.time()))
结果:2019-10-16 00:39:35.281226
将对象转换成时间戳:
from datetime import datetime
import time
print(datetime.timestamp(datetime.now()))
结果:1571157698.215962
对象转换成字符串:
print(datetime.strftime(datetime.now(),"%Y-%m-%d %H:%M:%S"))
结果:2019-10-16 00:48:41
字符串转换成对象:
from datetime import datetime
import time
print(datetime.strptime("2019/1/1","%Y/%m/%d")
结果:2019-01-01 00:00:00
时间相减:
from datetime import datetime
import time
print(datetime.now() -datetime(2011,1,1,12,13,14))
结果:3209 days, 12:44:27.577273
指定datetime时间用replace:
import datetime
current_time = datetime.datetime.now()
print(current_time.replace(year=1977)) # 直接调整到1977年
结果:
print(current_time.replace(month=1)) # 直接调整到1月份
print(current_time.replace(year=1989,month=4,day=25)) # 1989-04-25 18:49:05.898601
random随机模块
import random
#随机小数
random.random() # 大于0且小于1之间的小数
结果:0.06261820639552629
random.uniform(1,3) #大于1小于3的小数
结果:1.6270147180533838
print(random.randint(1,5)) # 大于等于1且小于等于5之间的整数
结果:1
print(random.randrange(1,10,2)) # 大于等于1且小于10之间的奇数
结果:5
]
结果:1
print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合不会出现重复
结果:['23', [4, 5]]
lst = [1,2,3,4]
random.shuffle(lst) #打乱次序
print(lst)
结果:[3, 2, 4, 1]
os模块
os模块是与操作系统交互的一个接口,它提供的功能多与工作目录,路径,文件等相关。
#1、显示当前目录用getcwd
import os
# print(os.getcwd())
结果:C:\我的代码\day15
将path分割成目录和文件名二元组返回
返回path的目录。其实就是os.path.split(path)的第一个元素
返回path最后的文件名。如何path以/或\结尾,那么就会返回空值,即os.path.split(path)的第二个元素。
print(os.path.basename(r"C:\Users\zd\Desktop\python_s3\day22\sss.py"))
#15、exists判断路径是否存在
print(os.path.exists(r"C:\Users\zd\Desktop\python_s3\day22\sss.py"))
#16、isabs判断绝对路径
print(os.path.isabs(r"C:\Users\zd\Desktop\python_s3\day22\sss.py"))
#17、判断path是否存在一个文件isfile
print(os.path.isfile(r"C:\Users\zd\Desktop\python_s3\day22\sss.py"))
#18、isdir判断path存在一个目录
print(os.path.isdir(r"C:\Users\zd\Desktop\python_s3\day22\sss.py"))
#19、join将路径进行拼接
a = r"C:\users\zd"
b = "python_s3\day22\sss.py"
print(os.path.join(a,b))
结果:C:\users\zd\python_s3\day22\sss.py
#20、getatime最后存取时间
print(os.path.getatime(r"C:\Users\zd\Desktop\python_s3\day22\sss.py"))
#21、最后修改时间
print(os.path.getmtime(r"C:\Users\zd\Desktop\python_s3\day22\sss.py"))
#22、给文件重命名:
import os
os.rename("旧名字","新名字")
23、删除文件:
import os
print(os.remove(r"C:\Users\zd\Desktop\lib.py"))
24、当前执行这个python文件的工作目录相关的工作路径:
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 **
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd **
os.curdir 返回当前目录: ('.') **
os.pardir 获取当前目录的父目录字符串名:('..') **
os.makedirs('dirname1/dirname2') 可生成多层递归目录 ***
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 ***
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname ***
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname ***
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 **
26、文件相关:
os.remove() 删除一个文件 ***
os.rename("oldname","newname") 重命名文件/目录 ***
os.stat('path/filename') 获取文件/目录信息 **
27、路径相关:
os.path.abspath(path) 返回path规范化的绝对路径 ***
os.path.split(path) 将path分割成目录和文件名二元组返回 ***
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 **
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值,即os.path.split(path)的第二个元素。 **
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False ***
os.path.isabs(path) 如果path是绝对路径,返回True **
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False ***
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False ***
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 ***
os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间 **
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 **
os.path.getsize(path) 返回path的大小 ***
28、操作系统相关了解:
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" *
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: *
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' *
# 和执行系统命令相关
os.system("bash command") 运行shell命令,直接显示 **
os.popen("bash command).read() 运行shell命令,获取执行结果 **
os.environ 获取系统环境变量 **
29、os.stat('path/filename') 获取文件/目录信息 的结构说明(了解):
stat 结构:
st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
sys模块
import sys
#1、命令行参数列表、
print(sys.argv)
结果:['C:/我的代码/day15/笔记.py']
#2、version获取Python解释器版本信息
print(sys.version)
#3、返回系统平台名称
print(sys.platform)
#5、sys.path--获取模块查找路径: