zoukankan      html  css  js  c++  java
  • 《Python学习之路 -- Python基础之模块与包》

      与其他脚本语言相似,在Python中也有模块和包的概念,在JavaScript中,一个js文件就是一个模块,有package.json文件的目录就是包;相似的,在Python中,通俗的说,一个py文件就是一个模块,拥有__init__.py的目录就是一个包,更准确的说,一个包可以包含多个模块,也就是说,多个模块组成了一个包。模块又可以分为:内置模块(标准库)、第三方模块和自定义模块。

      一个模块可以包含可执行的语句和函数的定义,这些语句的目的就是初始化模块,它们在该模块首次被导入时执行。导入模块有两种方式:import  和    from ...  import ...   (可以使用as关键字对模块进行重命名)

    导入注意事项:

    1、不管使用哪种方式导入模块,被导入的模块所有语句都会执行

    2、可以在程序的任意位置导入模块,但是需要注意命名空间的问题,首次导入时,解释器会为模块创建新的命名空间,但如果在同一个py文件的其他地方重复导入相同的模块,则会继续使用已经开辟的内存空间,而不是开辟新的内存。

    3、模块的查找顺序: 内存中已经加载的模块 ——  内置模块  ——  sys.path路径中包含的模块

    4、当执行一个脚本(py文件)时,解释器会将这个文件所在的目录加到sys.path路径中

    1、time 模块

    ①时间戳

    import time
    # 时间戳:从1970年1月1日0时到当前的时间,单位:秒
    time.time()

     ②结构化时间

    import time
    # t是当前的时间对象
    t = time.localtime()
    # 时间对象里面包含了当前的时间属性,比如:
    # 当前的年份  tm_year 
    # 当前的月份  tm_mon
    # 当前的日期  tm_mday
    # 当前的整点  tm_hour
    # 当前的分钟  tm_min
    # 当前的秒数  tm_sec
    # 当前是星期几,0表示星期一  tm_wday
    # 当天是今年的的多少天  tm_yday

     除了localtime之外,还可以通过 time.gmtime()获取UTC标准时间

    内置字符串时间

    # 参数默认为当前的格式化时间
    time.asctime()
    # 参数默认为当前的时间戳时间
    time.ctime()
    # 默认情况下两个方法返回的结果一致

    将结构化时间转为时间戳

    import time
    # time.mktime(格式化时间)
    time.mktime(time.localtime())

    将结构化时间转为字符串时间

    import time
    # time.strftime(字符串格式化,格式化时间)
    time.strftime('%Y-%m-%d %X',time.localtime())
    # 字符串格式化中,%Y表示年份,%m表示月份,%d表示天,%X表示时分秒,它们之间的分隔符可以自定义

    将字符串时间转为结构化时间

    import time
    # time.strptime(字符串时间,格式化时间)
    time.strptime(‘2018-5-4 13:49:36’,‘%Y-%m-%d %X’)

    ③延迟执行

    import time
    # time.sleep(延迟的秒数)
    time.sleep(1)

    2、random 模块

    import random
    # 生成一个0到1的随机浮点数
    random.random()
    # 生成一个1到10(包括1和10)的随机整数
    random.randint(1,10)
    # 生成一个1到10(不包括10)的随机整数
    random.randrange(1,10)
    # 随机选取一个可转为可迭代对象中的数据
    random.choice([11,22,33])
    # 随机选取一个或多个可转为可迭代对象中的数据
    random.sample([11,22,33,44],2)    # 2表示选取两个
    # 随机选取一个指定范围中的浮点数
    random.uniform(1,3)
    # 打乱一个集合中数据的次序
    random.shuffle([2,3,5,1,4])

    3、os 模块

    import os
    # 获取当前python脚本的目录
    os.getcwd()
    # 改变当前工作目录,相当于shell里面的cd
    os.chdir()
    # 生成多层递归目录
    os.makedirs('dirname1/dirname2')
    # 递归删除目录,若目录为空,则删除,并递归到上一级目录,如果也是空,则继续删除
    os.removedirs('dirname')
    # 创建一个目录
    os.mkdir('dirname')
    # 删除单据空目录,如果目录不为空则无法删除
    os.rmdir('dirname')
    # 列出指定目录下的所有文件和子目录,包括隐藏文件
    os.listdir(path)
    # 删除一个文件
    os.remove(path)
    # 重命名文件或目录
    os.rename()
    # 读取文件的状态,包括文件的大小,创建时间,修改时间,上次访问时间等信息
    os.stat(path)
    # 输出操作系统特定的路径分隔符,windows下为\,linux下为/
    os.sep()
    # 输出当前平台使用的行终止符,windows下为
    ,linux下为
    
    os.linesep()
    # 输出用于分隔文件路径的字符串,windows下为分号; , linux下为冒号:
    os.pathsep()
    # 获取系统环境变量
    os.environ()
    # 将path分隔成目录和文件名二元组返回
    os.path.split(path)
    # 返回path目录
    os.path.dirname(path)
    # 返回path最后的文件名
    os.path.basename(path)
    # 将多个路径组合并返回
    os.path.join(path1,path2)
    # 返回path所指向的文件或目录的最后存取时间
    os.path.getatime(path)
    # 返回path所指向的文件或目录的最后修改时间
    os.path.getmtime(path)

    4、sys 模块

    import sys
    # 返回模块搜索路径
    sys.path()
    # 返回操作哦系统平台名称
    sys.platform()
    # 退出程序
    sys.exit()
    # 获取Python解释器的版本信息
    sys.version()
    # 列出所有参数
    sys.agrv()
    # 立即刷新
    sys.stdout.flush()
    #向终端写入内容
    sys.stdout.write(str)

    5、json 模块

    import json
    # 将其他数据类型转为json字符串
    json.dumps()
    # 将json字符串转为其他数据类型
    json.loads()

    6、pickle 模块

    import pickle
    # 将其他数据类型转为对应的字节
    pickle.dumps()
    # 将字节转为其他数据类型
    pickle.loads()

    7、xml 模块

    import xml.etree.ElementTree as ET
    # 读取xml文件,返回文件对象
    tree = ET.parse('xxxx.xml')
    # 获取xml中的根标签,可遍历
    root = tree.getroot()
    for i in root:
        # 获取标签名
        print(i.tag)
        # 获取标签属性,返回一个字典
        print(i.attrib)
        # 获取标签体
        print(i.text)

    8、re 模块

    常用匹配模式:
    w   匹配字母、数字以及下划线
    W   匹配非字母数字下划线
    s   匹配任意空白字符
    S   匹配任意非空白字符
    d   匹配任意数字
    D   匹配任意非数字字符
    A   匹配字符串开始
       匹配字符串结束
    G   匹配最后匹配完成的位置
    
       匹配一个换行符
    	   匹配一个制表符
    ^    匹配字符串开头
    $    匹配字符串结尾
    .    匹配一个任意字符,换行符除外
    [abc]   表示一组字符,匹配a或b或c
    [^abc]  匹配除了a,b,c之外的字符
    *    匹配0个或多个表达式
    +    匹配1个或多个表达式
    ?   匹配0个或1个前面的字符
    {n}   精确匹配n个前面的表达式
    {n,m}   匹配n到m次由前面的正则表达式定义的片段
    a | b   匹配a或b
    ()      匹配括号内的表达式
    [a-z] 匹配所有小写字母
    [A-Z] 匹配所有大写字母
    [a-Z]  匹配所有字母
    [0-9] 匹配数字
    转义字符

     注意:在字符集[ ]中没有特殊符号,除了 ‘-’ ,‘/’  和 ‘’

    import re
    # 根据正则表达式reg匹配目标字符串target,结果返回一个列表
    re.findall(reg,target)
    # 只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
    re.search(reg,target)

     9、logging 模块

    import logging
    # 默认级别是warning,默认打印到终端上
    logging.debug('debug message')
    logging.info('info message')
    logging.warning('warning message')
    logging.error('error message')
    logging.critical('critical message')
    # 通过logging.basicConfig()函数可以为改变logging模块的默认行为,可用参数:
    filename:用指定的文件创建FileHandler,这样日志会被存储在指定的文件中
    filemode:文件的打开方式,在指定filename时使用这个参数,默认值为'a'表示追加,可以指定为'w'覆盖
    format:指定handler使用的日志显示格式
    datefmt:指定日期时间格式
    level:设置rootlogger的日志级别
    
    格式化:
    %(name)s:Logger的名字,并非用户名,详细查看
    
    %(levelno)s:数字形式的日志级别
    
    %(levelname)s:文本形式的日志级别
    
    %(pathname)s:调用日志输出函数的模块的完整路径名,可能没有
    
    %(filename)s:调用日志输出函数的模块的文件名
    
    %(module)s:调用日志输出函数的模块名
    
    %(funcName)s:调用日志输出函数的函数名
    
    %(lineno)d:调用日志输出函数的语句所在的代码行
    
    %(created)f:当前时间,用UNIX标准的表示时间的浮 点数表示
    
    %(relativeCreated)d:输出日志信息时的,自Logger创建以 来的毫秒数
    
    %(asctime)s:字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    
    %(thread)d:线程ID。可能没有
    
    %(threadName)s:线程名。可能没有
    
    %(process)d:进程ID。可能没有
    
    %(message)s:用户输出的消息

    (未完,待续)

  • 相关阅读:
    flex
    两端对齐
    background-clip、background-origin、box-sizing
    animation
    transform translate transition 的区别
    如何将页脚固定在页面底部
    normalize.css
    使用 Swift 制作一个新闻通知中心插件(1)
    在 App 扩展和主 App 间共享数据
    asp.net core Cookie认证
  • 原文地址:https://www.cnblogs.com/jonas-von/p/8991695.html
Copyright © 2011-2022 走看看