文章目录
一、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)) 随机1到5之间的整数
print(random.randrange(1,20,2)) 随机1到20之间的奇数
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,无权执行该文件')