• python 21 内置模块


    一,时间模块

    time

    时间分为三种格式:
    1、时间戳:从1970年到现在经过的秒数
    作用:用于时间间隔的计算

    print(time.time())

    2、按照某种格式显示的时间:2020-03-30 11:11:11
    作用:用于展示时间

    print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
    print(time.strftime('%Y-%m-%d %X'))

    3、结构化的时间
    作用:用于单独获取时间的某一部分

    res=time.localtime()
    print(res)
    print(res.tm_year)
    print(res.tm_yday)
    

    datetime

    import datetime
    
     print(datetime.datetime.now())
     print(datetime.datetime.now() + datetime.timedelta(days=3))
     print(datetime.datetime.now() + datetime.timedelta(weeks=1))
    

    时间模块需要掌握的操作

    1、时间格式的转换
    struct_time->时间戳

    import time
    s_time=time.localtime()
    print(time.mktime(s_time))
    

    时间戳->struct_time

    tp_time=time.time()
    print(time.localtime(tp_time))
    

    补充:世界标准时间与本地时间

    print(time.localtime())
    print(time.gmtime()) # 世界标准时间,了解
    print(time.localtime(333333333))
    print(time.gmtime(333333333))
    

    struct_time->格式化的字符串形式的时间

    s_time=time.localtime()
    print(time.strftime('%Y-%m-%d %H:%M:%S',s_time))
    
    print(time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S'))
    

    真正需要掌握的只有一条:format string<------>timestamp

    '1988-03-03 11:11:11'+7
    
    format string--->struct_time--->timestamp
    struct_time=time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S')
    timestamp=time.mktime(struct_time)+7*86400
    print(timestamp)
    
    format string<---struct_time<---timestamp
    res=time.strftime('%Y-%m-%d %X',time.localtime(timestamp))
    print(res)
    
    time.sleep(3)
    

    了解知识

    import time
    print(time.asctime())
    
    
    import datetime
    print(datetime.datetime.now())
    print(datetime.datetime.utcnow())
    
    print(datetime.datetime.fromtimestamp(333333))
    
    

    二 随机模块 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([111, 'aaa', [4, 5]]))  # 1或者23或者[4,5]
    
    print(random.sample([111, 'aaa', 'ccc','ddd'],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(size=4):
        res=''
        for i in range(size):
            s1=chr(random.randint(65,90))
            s2=str(random.randint(0,9))
            res+=random.choice([s1,s2])
        return res
    
    print(make_code(6))
    
    

    三,os模块

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
    os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
    os.curdir 返回当前目录: ('.')
    os.pardir 获取当前目录的父目录字符串名:('..')
    os.makedirs('dirname1/dirname2') 可生成多层递归目录
    os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
    os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
    os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
    os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    os.remove() 删除一个文件
    os.rename("oldname","newname") 重命名文件/目录
    os.stat('path/filename') 获取文件/目录信息
    os.sep 输出操作系统特定的路径分隔符,win下为"",Linux下为"/"
    os.linesep 输出当前平台使用的行终止符,win下为" ",Linux下为" "
    os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
    os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    os.system("bash command") 运行shell命令,直接显示
    os.environ 获取系统环境变量
    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的大小

    四,sys模块

    1 sys.argv 命令行参数List,第一个元素是程序本身路径
    2 sys.exit(n) 退出程序,正常退出时exit(0)
    3 sys.version 获取Python解释程序的版本信息
    4 sys.maxint 最大的Int值
    5 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    6 sys.platform 返回操作系统平台名称

    • 补充:打印进度条
    #=========知识储备==========
    #进度条的效果
    [#             ]
    [##            ]
    [###           ]
    [####          ]
    
    #指定宽度
    print('[%-15s]' %'#')
    print('[%-15s]' %'##')
    print('[%-15s]' %'###')
    print('[%-15s]' %'####')
    
    #打印%
    print('%s%%' %(100)) #第二个%号代表取消第一个%的特殊意义
    
    #可传参来控制宽度
    print('[%%-%ds]' %50) #[%-50s]
    print(('[%%-%ds]' %50) %'#')
    print(('[%%-%ds]' %50) %'##')
    print(('[%%-%ds]' %50) %'###')
    
    
    #=========实现打印进度条函数==========
    import sys
    import time
    
    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)),file=sys.stdout,flush=True,end='')
    
    
    #=========应用==========
    data_size=1025
    recv_size=0
    while recv_size < data_size:
        time.sleep(0.1) #模拟数据的传输延迟
        recv_size+=1024 #每次收1024
    
        percent=recv_size/data_size #接收的比例
        progress(percent,width=70) #进度条的宽度70
    

    五,shutil模块

    高级的 文件、文件夹、压缩包 处理模块

    1.将文件内容拷贝到另一个文件中
    shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

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

    3.仅拷贝权限。内容、组、用户均不变
    shutil.copymode('f1.log', 'f2.log') #目标文件必须存在

    4.仅拷贝状态的信息,包括:mode bits, atime, mtime, flags
    shutil.copystat('f1.log', 'f2.log') #目标文件必须存在

    5.拷贝文件和权限
    shutil.copy('f1.log', 'f2.log')

    6.拷贝文件和状态信息
    shutil.copy2('f1.log', 'f2.log')

    7.递归的去拷贝文件夹

    import shutil
    shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) 
    #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 
    
    shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
    
    #通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件
    

    8.递归的去删除文件
    shutil.rmtree('folder1')

    9.递归的去移动文件,它类似mv命令,其实就是重命名
    shutil.move('folder1', 'folder3')

    10.创建压缩包并返回文件路径,例如:zip、tar

    • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
      如 data_bak =>保存至当前路径
      如:/tmp/data_bak =>保存至/tmp/
    • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
    • root_dir: 要压缩的文件夹路径(默认当前目录)
    • owner: 用户,默认当前用户
    • group: 组,默认当前组
    • logger: 用于记录日志,通常是logging.Logger对象
    #将 /data 下的文件打包放置当前程序目录
    import shutil
    ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
      
    #将 /data下的文件打包放置 /tmp/目录
    import shutilret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data') 
    

    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()
    
    import tarfile
    
    # 压缩
    t=tarfile.open('/tmp/egon.tar','w')
    t.add('/test1/a.py',arcname='a.bak')
    t.add('/test1/b.py',arcname='b.bak')
    t.close()
    
    
    # 解压
    t=tarfile.open('/tmp/egon.tar','r')
    t.extractall('/egon')
    t.close()
    
  • 相关阅读:
    $(this)的意思
    Springmvc框架文件上传单文件上传
    保险业务知识价税分离
    SpringMVC框架,json
    使用springmvc框架实现多文件上传
    oracle数据库中的绑定变量
    使用Springmvc框架实现多文件上传(二)
    Springmvc框架json对象的处理
    Springmvc框架json数据传递处理,解决方案2
    [算法] 6 种排序的重写,很熟练!
  • 原文地址:https://www.cnblogs.com/Franciszw/p/12600533.html
Copyright © 2020-2023  润新知