zoukankan      html  css  js  c++  java
  • 包与常用模块

                                                 包、常用模块
    一、包
    1、包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来,

    包的执行:
    1 产生一个包的名称空间
    2 执行包下的__init__.py文件,将产生的名字存放于包的名称空间中
    3 在当前执行文件中拿到一个名字aaa,该名字指向包的名称空间

    注意的事项:
     1. 在python3中,即使包下没有__init__.py文件,import 包仍然不会报错,而在python2中,包下一定要有该文件,
    否则import 包报错

     2. 创建包的目的不是为了运行,而是被导入使用,记住,包只是模块的一种形式而已,包的本质就是一种模块
    2、为何要使用包?
    包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来
    随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,
    我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性
    3、包的导入
    1.关于包相关的导入语句也分为import和from ... import ...两种,但是无论哪种,无论在什么位置,
    在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法。
    可以带有一连串的点,如item.subitem.subsubitem,但都必须遵循这个原则。但对于导入后,
    在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。

    2、import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,
    即包下的__init__.py,导入包本质就是在导入该文件

    3、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间



    二、常用模块

    import time

    # 时间分为三种形式
    1、时间戳
    print(time.time())
    start_time=time.time()
    time.sleep(3)
    stop_time=time.time()
    print(stop_time-start_time)


    2、格式化的字符串
    print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
    print(time.strftime('%Y-%m-%d %X %p'))

    3、struct_time对象
    print(time.localtime()) # 上海:东八区
    print(time.localtime().tm_year)
    print(time.localtime().tm_mday)

    print(time.gmtime()) # UTC时区

    其中计算机认识的时间只能是'时间戳'格式,而程序员可处理的或者说人类能看懂的时间有: '格式化的时间字符串',
    '结构化的时间' ,于是有了下图的转换关系

    图=======================================================



    图=======================================================
    #--------------------------按图1转换时间
    # localtime([secs])
    # 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
    time.localtime()
    time.localtime(1473525444.037215)

    # gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。

    # mktime(t) : 将一个struct_time转化为时间戳。
    print(time.mktime(time.localtime()))#1473525749.0


    # strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和
    # time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个
    # 元素越界,ValueError的错误将会被抛出。
    print(time.strftime("%Y-%m-%d %X", time.localtime()))#2016-09-11 00:49:56

    # time.strptime(string[, format])
    # 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
    print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
    #time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,
    # tm_wday=3, tm_yday=125, tm_isdst=-1)
    #在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"。

    图=================================================


    图=================================================
    #--------------------------按图2转换时间
    # asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。
    # 如果没有参数,将会将time.localtime()作为参数传入。
    print(time.asctime())#Sun Sep 11 00:43:43 2016

    # ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
    # None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
    print(time.ctime()) # Sun Sep 11 00:46:38 2016
    print(time.ctime(time.time())) # Sun Sep 11 00:46:38 2016




    datetime模块(时间加减)

    print(datetime.datetime.now())
    print(datetime.datetime.now() + datetime.timedelta(days=3))
    print(datetime.datetime.now() + datetime.timedelta(days=-3))
    print(datetime.datetime.now() + datetime.timedelta(hours=3))
    print(datetime.datetime.now() + datetime.timedelta(seconds=111))


    current_time=datetime.datetime.now()
    print(current_time.replace(year=1977))


    print(datetime.date.fromtimestamp(1111111111))



    shutil模块
    压缩文件。

    import shutil
    import time
    ret = shutil.make_archive(
    "day15_bak_%s" %time.strftime('%Y-%m-%d'),
    'gztar',
    root_dir=r'D:codeSH_fullstack_s1day15'
    )

    import tarfile
    解压文件。
    t=tarfile.open('day15_bak_2018-04-08.tar.gz','r')
    t.extractall(r'D:codeSH_fullstack_s1day16解包目录')
    t.close()

    random模块
    Python中的random模块用于生成随机数


    import random

    print(random.random())#(0,1)----float 大于0且小于1之间的小数

    print(random.randint(1,3)) #[1,3] 大于等于1且小于等于3之间的整数

    print(random.randrange(1,3)) #[1,3) 大于等于1且小于3之间的整数

    print(random.choice([1,'23',[4,5]]))# 选择1或者23或者[4,5]

    print(random.sample([1,'23',[4,5]],2)) #列表元素任意2个组合

    print(random.uniform(1,3))#大于1小于3的小数,如1.927109612082716


    item=[1,3,5,7,9]
    random.shuffle(item) #打乱item的顺序,相当于"洗牌"
    print(item)

    验证码小程序:
    import random
    def meak_code(n=5):
    res=''
    for i in range(n)
    s1=str(random.randint(0,9))
    s2=chr(random,randint(65,90)
    res=random.choice([s1,s2])
    return res
    print(meak_code(5))

    ------------------------------------------------------------------------
    打印进度条:
    print('[ ]')
    print('[## ]')
    print('[### ]')
    print('[#### ]')
    print('[##### ]')


    print('[%-50s]' %'#')
    print('[%-50s]' %'##')
    print('[%-50s]' %'###')


    第一个%是取消第二个%号的特殊意义的
    num=30
    print('%s%%' %num)


    width=30
    print(('[%%-%ds]' %width) %'#')
    print(('[%%-%ds]' %width) %'##')
    print(('[%%-%ds]' %width) %'###')


    def progress(percent,width=50):
    if percent > 1:
    percent=1
    show_str=('[%%-%ds]' %width) %(int(width*percent) * '#')
    print(' %s %d%%' %(show_str,int(100*percent)),end='')

    import time
    recv_size=0
    total_size=8097
    while recv_size < total_size:
    time.sleep(0.1)
    recv_size+=8096
    percent=recv_size / total_size
    progress(percent)

  • 相关阅读:
    kafka的一些坑
    文件上传到七牛云oss并刷新cdn
    docker swarm集群常用操作
    kubernets中jenkins使用清华源加速插件安装
    获取jenkins插件最新版本
    kubeadm安装集群系列-7.部署jenkins
    kubeadm安装集群系列-6.ingress-nginx安装
    docker清理
    kubeadm安装集群系列-5.其他操作
    kubeadm安装集群系列-4.证书更新
  • 原文地址:https://www.cnblogs.com/yangwei666/p/8745243.html
Copyright © 2011-2022 走看看