zoukankan      html  css  js  c++  java
  • 59.语法基础-包

    包的结构

    • 包文件夹

      1. __init__.py文件
      2. 模块1
      3. 模块2
      4. 子包:
        1. __init__.py
        2. 模块1
        3. 模块2
    • 有时候自己写的包文件是以数字开头,而python不能以数字开头

      • 解决办法:借助第三方包 importlib包,中的import_module()方法来实现
    import importlib
    a = importlib.import_module("01")
    

    模块的搜索路径和存储

    • 路径的查询
    import sys
    for i in sys.path:
        print(i)
    #路径的添加
    #sys.path.append()向路径列表中添加新路径
    

    包的导入

    • 以下都是导入包中的__init__.py中的内容,其他模块需单独导入
      • import package
      • import package as X
      • from package import*
    • 若想上面方法导入其它模块,init.py文件中需使用__all__
      • __all__修饰后,只会载入__all__中内容,不会载入其他__init__中内容
      • __all__ = ["module1", "module2", "module3", "package1",...]

    常用包

    calendar--日历相关模块

    • calendar.calendar(year,w=0, l=0, c=0)返回指定年份的日历
    • calendar.prcal()同上
      • w-日期间的间隔字符数量
      • l-每周所占的行数
      • c-每个月之间间隔的字符数
    import calendar
    print(calendar.calendar(2020, w=0, l=0, c=0))
    
    • calendar.isleap(year)判断某年是不是闰年
    print(calendar.isleap(2020))
    
    • calendar.leapdays(year,year)指定年份到指定年份间,有几个闰年
    print(calendar.leapdays(1900,2020))
    
    • calendar.month(year, month)返回指定月份的日历
    • calendar.prmonth() 同上
    print(calendar.month(2020, 1))
    
    • calendar.monthrange(year, month)返回指定月是周几开始的和有几天的元组,周一从0开始
    w, l = calendar.monthrange(2020, 6)
    print(w)
    print(l)
    
    • calendar.monthcalendar(year, month)返回指定月份的列表矩阵(列表的嵌套)
    print(calendar.monthcalendar(2020, 1))
    
    • calendar.weekday(year, month, day) 返回指定日期是周几
    print(calendar.weekday(2020, 1, 1))
    

    time--时间相关模块

    • 时间戳:一个时间表示,根据编程语言不同,可能是整数,可能是小数从1970年1月1日0时0分0秒,到现在所经历的秒数32位系统支持到2038年,64位系统支持到

    • UTC时间:格林威治时间

    • 夏令时:国外会有规定的时间对标

    • 时间元组:python中一个包含时间元素的普通元组

    • 时间元组的元素

      • 0: 4位数年 2008
      • 1: 月 1 到 12
      • 2: 日 1到31
      • 3: 小时 0到23
      • 4: 分钟 0到59
      • 5: 秒 0到61 (60或61 是闰秒)
      • 6: 一周的第几日 0到6 (0是周一)
      • 7: 一年的第几日 1到366 (儒略历)
      • 8: 夏令时 -1, 0, 1, -1是决定是否为夏令时的旗帜
    • timezone当前时区和UTC时间相差的秒数(无夏令时)

    import time
    print(time.timezone)
    
    • altzone当前时区和UTC时间相差的秒数(有夏令时)
    print(time.altzone)
    
    • daylight判断当前是否是夏令时,0表示是
    print(time.daylight)
    
    • time.time()得到一个时间戳
    print(time.time())
    
    • time.localtime()返回一个当前的时间元组
    print(time.localtime())
    print(time.localtime()[0])
    t = time.localtime()
    print(t.tm_year)
    
    • asctime() 把时间元组字符串化
    print(time.asctime(time.localtime()))
    
    • ctime()把时间元组字符串化,可以直接用
    print(time.ctime())
    
    • time.mktime()通过时间元组获取时间戳(截取了浮点数的整数部分)
    print(time.mktime(time.localtime()))
    
    • time.clock()获取CPU时间(但是3.3版本后就不好用了,建议不要用了)
    pass
    
    • time.sleep()使程序进入休眠,N秒后继续
    for i in range(10):
        print(i)
        time.sleep(0.01)
    
    • time.strftime()将时间元组转化为自定义的字符串格式

    • python中时间日期格式化符号

      符号 描述
      %y 两位数的年份表示(00-99)
      %Y 四位数的年份表示(000-9999)
      %m 月份(01-12)
      %d 月内中的一天(0-31)
      %H 24小时制小时数(0-23)
      %I 12小时制小时数(01-12)
      %M 分钟数(00=59)
      %S 秒(00-59)
      %a 本地简化星期名称
      %A 本地完整星期名称
      %b 本地简化的月份名称
      %B 本地完整的月份名称
      %c 本地相应的日期表示和时间表示
      %j 年内的一天(001-366)
      %p 本地A.M.或P.M.的等价符
      %U 一年中的星期数(00-53)星期天为星期的开始
      %w 星期(0-6),星期天为星期的开始
      %W 一年中的星期数(00-53)星期一为星期的开始
      %x 本地相应的日期表示
      %X 本地相应的时间表示
      %Z 当前时区的名称
      %% %号本身
    t = time.localtime()
    tt = time.strftime("%Y年%m月%d日 %H:%M:%S", t)
    print(tt)
    

    datetime--日期相关模块

    • 提供时间和日期的运算表示

    • datetime.date(year, month, day)构造一个日期

    import datetime
    t = datetime.date(2020, 10, 1)
    print(t)
    print(t.day)
    print(t.month)
    print(t.year)
    
    • datetime.time(hour, minute, second)构造一个时间
    t = datetime.time(23, 48, 50)
    print(t)
    print(t.second)
    print(t.minute)
    print(t.hour)
    
    • datetime包中的datetime模块 提供时间和日期的组合
    from datetime import datetime
    print(datetime.today())  #获取本地的日期时间
    print(datetime.now())  #同上,但是接受一个时区参数,如果没有同上
    print(datetime.utcnow())  #格林威治时间
    print(datetime.fromtimestamp(time.time()))  #从一个时间戳得到时间
    
    • datetime.timedelta() 获取一个时间间隔
    from datetime import datetime, timedelta
    t1 = datetime.now()
    t2 = timedelta(hours = 1)
    print(t1 + t2)
    

    timeit时间测量工具包

    • timeit(stme="",setup="", number=x)
    • 测试两段代码的运行时间
      • stmt要运行的代码,以字符串的形式给入,或者是一个函数
      • setup需要的一些环境变量
      • number循环次数
    import timeit
    
    c1 = """
    sum = []
    for i in range(a):
        sum.append(i)
        """
    c2 = "[i for i in range(10000)]"
    print(timeit.timeit(stmt=c1, setup="a=10000", number=1))
    print(timeit.timeit(stmt=c2, setup="pass", number=1))
    
    def doIt():
        n = 4
        for i in range(n):
            print("数字{}".format(i))
    print(timeit.timeit(stmt=doIt, setup="pass", number=1))
    

    os操作系统相关包

    • os.getcwd()返回字符串,获取当前工作目录的绝对路径
    import os
    print(os.getcwd())
    
    • os.chdir("新路径")改变当前的工作目录
    os.chdir("C:\Users\tkDesktop\1")
    print(os.getcwd())
    
    • os.listdir()返回一个列表,获取一个文件夹中的所有子目录和文件目录
    print(os.listdir("C:\Users\tkDesktop\1"))
    
    • os.makedirs("文件夹名字")在工作目录创建一个新文件夹
    pass
    
    • os.system("系统命令符") 运行系统shell命令
      • 返回值为0表hi执行成功,1为失败
      • 一般推荐使用"subprocess"模块代替
    print(os.system("ls"))
    
    • os.getenv("环境变量名称")返回字符串,获取指定的系统环境变量值
    print(os.getenv("PATH"))
    
    • os.putenv("环境变量名称","内容")添加一个环境变量
    pass
    
    • os.exit() 退出系统
    pass
    
    • os.cirdir 返回当前目录
    print(os.curdir)
    
    • os.pardir 返回父目录
    print(os.pardir)
    
    • os.sep 返回当前系统的路径分隔符
    print(os.sep)
    
    • os.linesep 返回当前系统的行终止符
    print(os.linesep)
    
    • os.name 返回当前系统名
    print(os.name)
    

    os.path 模块

    • os.path.abspath 将给的路径转化为绝对路径
    import os.path
    print(os.path.abspath(".")) #"."为当前路径
    
    • os.path.basename("路径") 获得路径中的文件名部分
    print(os.path.basename("C:\Users\tkDesktop\1"))
    
    • os.path.join("路径1","路径2","路径3", ...) 拼合适合当前系统文件路径
    print(os.path.join("{}".format(os.getcwd()), "1"))
    
    • os.path.split("路径") 将路径分割为文件夹部分和文件部分,返回一个元组
    print(os.path.split("C:\Users\tkDesktop\1"))
    
    • os.isdir("路径") 判断路径是否是目录
    print(os.path.isdir("C:\Users\tkDesktop\1\P00_Test"))
    
    • os.path.exists("路径") 判断“文件”或“目录”是否存在
    print(os.path.exists("C:\Users\tkDesktop\1"))
    

    shutil 文件的相关操作模块

    • shutil.copy("文件路径", "目标路径") 复制文件

      • 返回值为目标路径
      • 赋值的同时可以重命名,在目标路径加新文件名
    • shutil.copy2("文件路径", "目标路径") 复制文件 同时保留文件的属性(创建时间等)

    • shutil.copyfile("文件路径", "目标路径") 复制一个文件的内容到另一个文件中

      • 返回目标文件路径
    • shutil.move("文件目录", "目标目录") 移动文件

      • 返回目标路径
    • shutil.make_archive("归档后的目录和文件名","后缀","需要归档的文件夹") 文件归档操作

      • 返回归档后的路径
      • 后缀只支持几种:zip,rar等。
    • shutil.unpack_archive("归档文件路径","解包之后的地址") 文件解档操作

      • 返回解包后的路径

    zipfile 压缩包

    • zipfile.ZipFile("归档文件的路径") 用于实例化一个压缩文件,类似于a=Tk()
    zf = zipfile.ZipFile("归档文件的路径")
    
    • 实例.getinfo("文件名") 获得压缩包内指定文件的文件属性,如创建时间等
    print(zf.getinfo("文件名"))
    
    • 实例.namelist("归档文件的路径") 获取归档文件内的所有文件列表
    print(zf.namelist("归档文件的路径"))
    
    • 实例.extractall("解档的路径") 解档文件
    zf.extractall("解档的路径")
    

    random 随机数包

    • random.random() 产生一个0-1之间的随机小数
    import random
    print(random.random())
    
    • random.uniform(a,b) 在a,b数间,可以是整数也可以是浮点数,产生一个随机的浮点数
    print(random.uniform(1.5,10.5))
    
    • random.randint(a,b) 在a,b数间,可以是整数也可以是浮点数,产生一个随机的整数
    print(random.randint(2,5))
    
    • random.randrange(a,b,c) 在a,b数间以c为间隔,产生一个随机整数
    print(random.randrange(1,9,2))
    
    • random.chioce(sequence) 在一个序列中随机选择一个数
    l = [1,4,5,7,9,12]
    print(random.choice(l))
    
    • random.shuffle(sequence) 将一个列表内的元素打乱,无返回值,打乱元列表
    random.shuffle(l)
    print(l)
    
    • random.samlpe(sequence,x) 从一个序列中,随机产生一个指定个数列表,不打乱元序列
    tu = (2,3,4,8,7)
    st = "python is ok"
    print(random.sample(l, 2))
    print(random.sample(tu, 2))
    print(random.sample(st, 2))
    
    • 三角分布的随机数 random.triangular(low, high, mode)
    • 高斯分布的随机数(稍快) random.gauss(mu, sigma)
    • beta β分布的随机数 random.betavariate(alpha, beta)
    • 指数分布的随机数 random.expovariate(lambd)
    • 伽马分布的随机数 random.gammavariate(alpha, beta)
    • 对数正态分布的随机数 random.lognormvariate(mu, sigma)
    • 正态分布的随机数 random.normalvariate(mu, sigma)
    • 冯米塞斯分布的随机数 random.vonmisesvariate(mu, kappa)
    • 帕累托分布的随机数 random.paretovariate(alpha)
    • 韦伯分布的随机数 random.weibullvariate(alpha, beta)

    math 处理数学相关运算包

    • 定义了两个常数,e自然常数 和 pi圆周率
    import math
    print(math.e)
    print(math.pi)
    
    • math.ceil(x) 浮点数向上取整
    • math.floor(x) 浮点数向下取整
    • math.pow(x,y) 指数函数,X的Y次方
    • math.log(x,base) 指数函数,默认以e为底数,base可以指定底数
    • math.sqrt(x) 开平方
    • 三角函数,弧度角度互换,双曲函数 等。

    collections模块

    namedtuple模块

    • 给一组tuple数据命名,方便阅读
    from collections import namedtuple
    Point = namedtuple("Point", ["x", "y", "z"])
    p = Point(2, 3, 4)
    print(p[0])
    print(p.y)
    

    deque模块

    • 解决频繁的在list中插入和删除元素的效率问题
    from collections import deque
    l = [1,2,3,4,5]
    a = deque(l)
    a.append("b")
    print(a)
    a.appendleft("v")
    print(a)
    

    defaultdict()方法

    • 调用指定字典时,如果没有key正常时报错,如果用此模块,就返回指定函数
    from collections import defaultdict
    
    d = defaultdict(lambda:"None")
    d["a"] = 1
    d["b"] = 2
    print(d["a"])
    print(d["g"])
    

    Counter模块统计一个字符串出现的频率

    from collections import Counter
    
    print(Counter("abbcccddddeeeeeffffff"))
    print(Counter(["sere", "lro", "mdmd"]))
    
  • 相关阅读:
    Docker Swarm与Kubernetes对比分析如何选择?
    dockerMesos配置项是怎么解析的?案例详解
    Python爬虫如何提取百度搜索到的内容?案例教你
    python之urllib2是如何运用的?正确方法教你
    Python之解BS4库如何安装与使用?正确方法教你
    Python爬虫之Selenium环境如何正确配置?本文详细讲解
    Python爬虫之GET和POST请求然后正确运用详解
    Python怎么识别文字?正确 的方法详解
    Python爬虫如何获取页面内所有URL链接?本文详解
    在Java中,为什么十六进制数0xFF取反之后对应的十进制数是-256呢?
  • 原文地址:https://www.cnblogs.com/TK-tank/p/12346428.html
Copyright © 2011-2022 走看看