• 包的使用和常用模块


    包的使用和常用模块
    今天我们主要学习了常用模块中的 time,random,os,sys,shutil,json,pickle,logging 以及应用


    1,包的使用


    包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来,提高程序的结构性和可维护性
    包相关导入语句分为import和from....import...两种

    (1)import导入文件时,产生的名称空间中的名字来自于文件,import包,产生的名称空间的名字同样来自于文件,即包下的__init__.py 导入包本质导入该文件、
    单独导入包名称时不会导入包中所有包含的所有子模块,执行文件与示范文件在同级目录下
    (2)包的使用之from。。。import
    需要注意的是from后import导入的模块,必须是一个明确的不能带点,没有前缀,包内模块直接导入应该使用from。。import

    注意,左边必须是包,import后面不能有相应的后缀如:(from a.b.c import f.h)#错误

    包内文件永远不会有执行需求,只能导入
    (3)这样子使用的包我们该名字起来很麻烦,所以我们一一种更简单的方法,也更方便
    相对导入.. 一个点表示当前目录,两个点代表当前目录和上一级目录
    from..m1 import f

    路径找不到时:import sys
    sys.path.append(r'把文件路径复制过来')
    import

    2,常用模块


    import time
    三种形式
    (1)时间戳
    print(time.time())
    strt_time=time.time()
    time.sleep(3)#睡3秒
    stop_time=time.time()
    print(stop_time-start_time)

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

    #3stuct_time对象
    print(time.localtime())# (上海,东八区)
    print(time.localtime().tm_year)
    print(time.localtime().tm_mday)

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

    datetime 模块 时间
    # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
    #print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19
    # print(datetime.datetime.now() )
    # print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
    # print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
    # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
    # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分

    # c_time = datetime.datetime.now()
    # print(c_time.replace(minute=3,hour=2)) #时间替换
    (datatime.date.fromimestamp(1111))转为年月日


    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 make_code(n):
    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(make_code(10))


    想要大写小写可以查ASCII表

    进度条功能

    import sys
    import time
    total_size=10212
    recv_size=0
    def progress(percent,width=50):
    if percent > 1: #如果百分比大于1的话则取1
    percent=1
    show_str=('[%%-%ds]' %width) %(int(percent*width)*'#')
    #一共50个#,%d 无符号整型数,-代表左对齐,不换行输出,两个% % 代表一个单纯的%,对应的是后面的s,后面为控制#号的个数
    # print(show_str) #[############### ] show_str ,每次都输出一次
    print(' %s %s%%' %(show_str,int(percent*100)),end='',file=sys.stdout,flush=True)
    # 代表调到行首的意思, 为换行的意思,fiel代表输出到哪,flush=True代表无延迟,立马刷新。第二个%s是百分比
    while recv_size < total_size: #当接收的大小小于总大小时
    time.sleep(0.2) #1024
    recv_size+=1024 #每次接收1024
    percent=recv_size/total_size #计算百分比 0.10027418723070897
    progress(percent,width=30) #调用进度条函数,将百分比传

    sys模块
    sys.path
    sys.argv

    shutil模块

    shutil.copyfileobj(fsrc, fdst[, length])
    将文件内容拷贝到另一个文件中
    import shutil
    shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

    shutil.copyfile(src, dst)
    拷贝文件

    shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在


    shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
    import zipfile

    # 压缩
    z = zipfile.ZipFile('laxi.zip', 'w')
    z.write('a.log')
    z.write('data.data')
    z.close()

    # 解压
    z = zipfile.ZipFile('laxi.zip', 'r')
    z.extractall(path='.')
    z.close()

  • 相关阅读:
    日志服务器 03-部署日志服务器(网络设备部分)
    日志服务器 02-部署日志服务器(主机部分)
    日志服务器 01-Linux日志系统syslog
    nyoj--523--亡命逃窜(BFS水题)
    hdoj--3488--Tour(KM)
    hdoj--1533--Going Home(KM)
    hdoj--2255--奔小康赚大钱(KM算法模板)
    LightOJ--1152--Hiding Gold(二分图奇偶建图)(好题)
    hdoj--5093--Battle ships(二分图经典建图)
    LightOJ--1149--Factors and Multiples(二分图好题)
  • 原文地址:https://www.cnblogs.com/maojiang/p/8749007.html
Copyright © 2020-2023  润新知