自定义模块、模块导入、模块的路径、模块的查找顺序、time、datetime、random、os、sys

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:UserszdDesktop")
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模块中对于时间可以分成三种形式:
  1. 时间戳: 通常的叫法,时间戳表示的是格林尼治时间是从1970年1月1日00:00:00开始按秒计算的偏移量。这个是实时变化的。我们运行“type(time.time())”,返回的是float类型
  2. 格式化字符串时间: 格式化的时间字符串(Format String): ‘1999-12-06’
  3. 结构化时间:元组(struct_time) struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
  4. 时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

    时间模块我们就是学会如何获取当前的时间,以及三种时间之间的转化就行了。

#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年
结果:
1977-10-16 19:15:35.278185
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
print(random.choice([1,'23',[4,5]]))  #随机选择一个返回1或者23或者[4,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
#4、新建用makedirs
# os.makedirs("dirname1/dirname2")
# print(os.getcwd())
#5、删除removedirs
# os.removedirs("python_s3/dirname1/dirname2")
#6、清单listdir
print(os.listdir())
#7、获取文件目录信息stat
print(os.stat("sss.py"))
结果:os.stat_result(st_mode=33206, st_ino=6192449487787461, st_dev=4200487114, st_nlink=1, st_uid=0, st_gid=0, st_size=42, st_atime=1571184521, st_mtime=1571184521, st_ctime=1571184521)
#8、s分隔符
print(os.sep)
#9、分割文件 路径字符串
print(os.pathsep)
#10、name是当前文件使用的平台
print(os.name)
#11、system显示当前目录的文件信息
print(os.system("dir"))
#12、将path分割成目录和文件名二元组返回
print(os.path.split(r"C:UserszdDesktoppython_s3day22sss.py"))
#13、dirname--返回path的目录。其实就是os.path.split(path)的第一个元素
print(os.path.dirname(r"C:UserszdDesktoppython_s3day22sss.py"))
#14、basename-- 返回path最后的文件名。如何path以/或结尾,那么就会返回空值,即os.path.split(path)的第二个元素。
print(os.path.basename(r"C:UserszdDesktoppython_s3day22sss.py"))
#15、exists判断路径是否存在
print(os.path.exists(r"C:UserszdDesktoppython_s3day22sss.py"))
#16、isabs判断绝对路径
print(os.path.isabs(r"C:UserszdDesktoppython_s3day22sss.py"))
#17、判断path是否存在一个文件isfile
print(os.path.isfile(r"C:UserszdDesktoppython_s3day22sss.py"))
#18、isdir判断path存在一个目录
print(os.path.isdir(r"C:UserszdDesktoppython_s3day22sss.py"))
#19、join将路径进行拼接
a = r"C:userszd"
b = "python_s3day22sss.py"
print(os.path.join(a,b))
结果:C:userszdpython_s3day22sss.py
#20、getatime最后存取时间
print(os.path.getatime(r"C:UserszdDesktoppython_s3day22sss.py"))
#21、最后修改时间
print(os.path.getmtime(r"C:UserszdDesktoppython_s3day22sss.py"))
#22、给文件重命名:
import os
os.rename("旧名字","新名字")
23、删除文件:
import os
print(os.remove(r"C:UserszdDesktoplib.py"))
24、当前执行这个python文件的工作目录相关的工作路径:
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径  ** 
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd  **
os.curdir  返回当前目录: ('.')  **
os.pardir  获取当前目录的父目录字符串名:('..') **
25、文件夹相关:
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下为"	
",Linux下为"
" 
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--获取模块查找路径:
原文地址:https://www.cnblogs.com/zhang-da/p/11669426.html