• 18-random/os/sys 模块(2)


    一、random 模块

    2.1 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.choices([1,2,3], weights = [1,1,2], k=3)) # 得到[1]或[2]的概率为25%,获得[3]的概率为50%,3表示选取次数
     
    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)

    2.2 random的应用---随机验证码

    import random
    # 随机验证码
    def random_code(size=4):
        code = ""
        for i in range(size):
            alp_up = chr(random.randint(65,90))    # chr将int类型与ASCII对应取值
            alp_low = chr(random.randint(97,122))
            num = str(random.randint(0,9))
    
            # 第二个列表weights=[]中存放各元素权重,k为选取次数.返回值为列表
            single_code = random.choices([alp_low,alp_up,num],weights=[1,1,2],k=2)
            code += single_code[0]
        return code
    
    print(random_code())

    二、os 模块

    2.1 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的大小

     2.2 一般应用

    import os
    
    # 获取某一个文件夹下所有的子文件以及子文件夹的名字
    res=os.listdir(r"D:Python预科班day06")  # 返回子文件及子文件夹名字的列表
    print(res)                                # ['作业.py', '字符串操作.py', '录屏讲解.py', '测试.py', '进制转换.py']
    #
    #
    # 获取文件大小
    size=os.path.getsize(r'/Users/linhaifeng/PycharmProjects/s14/day22/01 时间模块.py')
    print(size)
    
    
    os.remove()  删除一个文件
    os.rename("oldname","newname")  重命名文件/目录
    
    
    
    # 可调用os下的系统指令
    os.system("dir")
    os.system("ipconfig")
    os.system("cls")
    
    
    # 添加环境映射  environ:字符串所对应环境的映像对象
    # 规定:key与value必须都为字符串
    os.environ['aaaaaaaaaa']='111'
    print(os.environ)
    
    # 文件名称以及文件所在文件夹路径
    print(os.path.dirname(r'/a/b/c/d.txt'))         # /a/b/c 打印路径所在的文件夹
    print(os.path.basename(r'/a/b/c/d.txt'))        # d.txt  打印该文件名
    
    # 判断是否是文件夹或文件
    print(os.path.isfile(r'笔记.txt'))
    print(os.path.isfile(r'aaa'))
    print(os.path.isdir(r'aaa'))
    
    print(os.path.join('a','/','b','c','d'))
    
    
    
    
    # 推荐用这种
    BASE_DIR=os.path.dirname(os.path.dirname(__file__))
    # print(BASE_DIR)
    
    # 规范化路径 os.path.normpath 只在Windows下有用,linux下会原样返回
    BASE_DIR=os.path.normpath(os.path.join(
        __file__,
        '..',
        '..'
    ))
    print(BASE_DIR)                                 #  D:homeworkday21
    
    # 在python3.5之后,推出了一个新的模块pathlib
    from pathlib import Path
    
    # .parent找到当前文件的父文件夹路径
    res = Path(__file__).parent.parent
    print(res)
    
    # 组合路径 类似os.path.join
    res=Path('/a/b/c') / 'd/e.txt'                  # acde.txt
    print(res)
    
    # 绝对路径,返回res的绝对路径
    print(res.resolve())

    三、 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) %'#')  # "[%%-%ds]" %50 ---> ([%-50s]) %"#"
    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 模块

    详情参考egon老师的博客:https://www.cnblogs.com/linhaifeng/articles/6384466.html#_label5

  • 相关阅读:
    repr() Vs str()
    默认参数
    元组
    字典
    电脑可以办的两类最基本的事情
    代码块
    变量名
    print的逻辑
    input的逻辑
    让python2听懂中文
  • 原文地址:https://www.cnblogs.com/zhubincheng/p/12601789.html
Copyright © 2020-2023  润新知