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下为"\t\n",Linux下为"\n"
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:\homework\day21

# 在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'                  # \a\b\c\d\e.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('\r%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

posted @ 2020-03-30 22:25  Jil-Menzerna  阅读(152)  评论(0)    收藏  举报