Python内置模块#2

一、random随机数模块

1.导入随机数模块

import random

2.随机小数

print(random.random()) 大于0小于1的随机小数 #0.316523201177638
print(random.uniform(1,10)) 大于1小于10的随机小数 #7.975289992627344

3.随机整数

print(random.randint(1,5)) 随机15之间的整数
print(random.randrange(1,20,2)) 随机120之间的奇数

4.随机返回数据

print(random.choice(['一等奖', '二等奖', '三等奖', '四等奖', '五等奖']))   #一等奖 返回一个随机字符串类型
print(random.choices(['一等奖', '二等奖', '三等奖', '四等奖', '五等奖']))  #['四等奖'] 返回一个随机元素并且是列表形式
print(random.sample(['一等奖', '二等奖', '三等奖', '四等奖', '五等奖'],2)) #['一等奖', '二等奖'] 返回2个水机元素并且是列表形式

5.打乱列表顺序

l1 = ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
random.shuffle(l1)
print(l1) #[3, 6, 'K', 8, 'A', 10, 7, 5, 4, 2, 'Q', 9, 'J']
随机打乱顺序并且以列表形式返回

6.练习题随机生成验证码

随机生成四、五、六位数验证码

def number(n=4): 默认参数n=4
    code = ''
    for i in range(n):  # 循环次数
        random_int = str(random.randint(0,9))  #  随机数字0到9并转换成字符串
        random_upper = chr(random.randint(65,90))  # 随机ASCLL码表中的26大写字母
        random_lower = chr(random.randint(97,122))  # 随机ASCLL码表中的26小写字母

        temp = random.choice([random_int,random_upper,random_lower])  #在以上三个随机数中再随机一个数并返回
        code += temp

    return code

print(number())  #H8xY
print(number(5))  #7CmGr
print(number(6))  #oS2B3O

随机生成一个快递单号

import time

def getnum():
    code = 'SF' + time.strftime('%Y%m%d%H%M%S')  # 时间戳
    for i in range(4): # 循环次数
        random_int = str(random.randint(0,9))  #  随机数字0到9并转换成字符串
        random_upper = chr(random.randint(65,90))  # 随机ASCLL码表中的26大写字母
        random_lower = chr(random.randint(97,122))  # 随机ASCLL码表中的26小写字母

        temp = random.choice([random_int,random_upper,random_lower]) #在以上三个随机数中再随机一个数并返回
        code += temp
    return code

print(getnum())  # SF20230921155747FQ5S

二、os模块

os模块是与操作系统交互的接口

1.生成目录(文件夹)

os.mkdir(r'a')  # 相对路径,在执行文件路径下创建目录,名为a的目录
os.mkdir(r'b\c\d')  # 不能创建多级目录
os.makedirs(r'b\c\d')  # 可以创建多层递归目录,亦可以创建单层目录

在这里插入图片描述

2. 删除目录(文件夹)

os.rmdir(r'a')  # 相对路径,在执行文件路径下删除目录,名为a的目录
os.rmdir(r'b\c\d')  # 不可以删除多层级目录
os.removedirs(r'b\c\d')  #删除多层目录,若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.removedirs(r'b\c')  #只能删除空的多层目录

3. 列举路径下的内容

列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
print(os.listdir(r'E:\Python_month_1\day23'))  # ['.idea', 'os_exercise.py', 'random_exercise.py', '__pycache__']

4.删除文件,重名名文件

os.rename(r'aaa',r'111') # 给文件夹或文件命名
os.remove(r'123.txt') # 移除文件

5.获取文件信息

print(os.stat(r'123'))  #os.stat_result(st_mode=33206, st_ino=16888498602651782, st_dev=1791571313, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1695285532, st_mtime=1695285532, st_ctime=1695285532)
os.system("bash command")  运行shell命令,直接显示
os.popen("bash command).read()  运行shell命令,获取执行结果
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd

6. 动态获取项目根路径

print(os.path.abspath(__file__))  #E:\Python_month_1\day23\os_exercise.py  获取执行文件的绝对路径
print(os.path.dirname(__file__))  #E:\Python_month_1\day23  获取执行文件所在目录路径

7.判断路径是否存在(文件、目录)

print(os.path.exists('111'))  #True  判断文件路径是否存在
print(os.path.exists(r'E:\Python_month_1\day23\random_exercise.py'))  #True  判断文件路径是否存在
print(os.path.isfile(r'E:\Python_month_1\day23'))  #False  判断路径是否是文件
print(os.path.isfile(r'E:\Python_month_1\day23\random_exercise.py'))  #True  判断路径是否是文件
print(os.path.isdir(r'E:\Python_month_1\day23'))  #True  判断路径是不是路径
print(os.path.isdir(r'random_exercise.py'))  #False  判断路径是不是路径

8.路径拼接

base_dir = r'E:\Python_month_1'
path = r'day23\random_exercise.py'
print(f'{base_dir}\{path}')



base_dir = r'E:\Python_month_1'
path = base_dir + '\\' + 'day23' + '\\' + '111' + '\\' + '222'
print(path)


res = os.path.join(base_dir,'aaa','bbb')  #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
课堂练习
# 1. 先拼接路径把 E:\Python_month_1\day23\好多文件,这个文件夹里的文件先读取出来
get_path = os.path.dirname(os.path.abspath(__file__))  # E:\Python_month_1\day23
fpath = os.path.join(get_path, '好多文件')  # E:\Python_month_1\day23\好多文件
res = os.listdir(fpath)
# print(res)  # ['1.txt', '2.txt', '3.txt', '4.txt']
while True:
    for i, j in enumerate(res):
        print(i + 1, j)  # 列出文件
    print('输入5退出')
    # 2. 让用户输入编号
    cmd = input('请输入你想查看的文件编号:').strip()

    # 3. 判断输入的序号时候为数字
    if cmd == '5':
        break
    if cmd.isdigit():
        cmd = int(cmd)
        if cmd in range(1, len(res) + 1):
            file_path = os.path.join(fpath, res[cmd - 1])
            with open(file_path, 'r', encoding='utf-8') as f:
                print(f.read())
        else:
            print('请输入正确数字')

    else:
        print('请输入数字')

三、sys模块

import sys
print(sys.path)  # 获取执行文件的sys.path
print(sys.getrecursionlimit())  # 获取python解释器默认最大递归深度
print(sys.setrecursionlimit(2000))  # 修改python解释器默认最大递归深度  None
print(sys.version)  # 获取Python解释程序的版本信息息
print(sys.platform)  # 返回操作系统平台名称 (了解即可)

res = sys.argv
if len(res) != 3:
    print('执行命令缺少了用户名或密码')
else:
    username = res[1]
    password = res[2]
    if username == 'kiki' and password == '123':
        print('kiki,您的文件正在正常执行')
    else:
        print('你不是kiki,无权执行该文件')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值