zoukankan      html  css  js  c++  java
  • 自定义模块、模块导入、模块的路径、模块的查找顺序、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--获取模块查找路径:
  • 相关阅读:
    python实现RSA加密解密方法
    信息安全-2:python之hill密码算法[原创]
    信息安全-4:公钥密码体制之背包算法[原创]
    python之import子目录文件
    python之路径导入
    python之局部变量引用赋值前的结果
    python之socket-ssh实例
    python之面向对象与构造函数
    git搜索--grep
    git日志--log
  • 原文地址:https://www.cnblogs.com/zhang-da/p/11669426.html
Copyright © 2011-2022 走看看