常用内置模块(2)

random模块

# 生成随机数模块,也是一个内置的模块,直接使用
import random
import random

print(random.random())  # 0.607068057472247  # 大于0且小于1之间的小数

print(random.uniform(1, 3))  # 大于1小于3的小数

"""生成随机整数"""
# print(random.randint(1, 10))  # 大于等于1且小于等于5之间的整数
print(random.randrange(1, 10, 2))  # 大于等于1且小于10之间的奇数

# 随机选择一个返回
print(random.choice([1, 2, 33, 4, 55, [11, 22]]))  # #1或者23或者[4,5]
# random.choice(1, 2, 3, 4, 5)
# random.choice([1,2 ,3, 5,])

print(random.choice(['一等奖', '二等奖', '三等奖', '四等奖', '五等奖', ]))  # 每次随机出来一个结果
"""抽奖:商家搞活动抽奖、公司年会上抽奖"""
# 微信小程序:抽奖助手(基本是公平,一亿用户,10个)

print(random.sample([1, '23', [4, 5], 4, 5, 6, 7, 8, 9], 3))  # #列表元素任意2个组合

# 打乱列表顺序
item = [1, 3, 5, 7, 9]
random.shuffle(item)  # 打乱次序 洗牌

res = ['A', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K']
random.shuffle(res)
print(res)
import time

"""随机验证码"""
# 1. 数字、字母(大写、小写的)
# 2. 位数(4位、5位、6位)

# ### 循环生成随机验证码
def get_code(n=4):
    code = 'SF'
    for i in range(n):
        random_int = str(random.randint(0, 9)) # 0-9之间的整数
        # random_upper = random.choice(['A', 'B', 'C', 'D', 'E',])
        random_upper = chr(random.randint(65, 90))

        random_lower = chr(random.randint(97, 122))

        temp=random.choice([random_int, random_upper, random_lower])
        code += temp # A2E5
    return code

### 循环生成随机验证码
def get_out_order():
    code = 'SF' + time.strftime('%Y%m%d%H%M%S') # SF20230921103119
    for i in range(8):
        random_int = str(random.randint(0, 9)) # 0-9之间的整数
        # random_upper = random.choice(['A', 'B', 'C', 'D', 'E',])
        random_upper = chr(random.randint(65, 90))

        random_lower = chr(random.randint(97, 122))

        temp=random.choice([random_int, random_upper, random_lower])
        code += temp # A2E5
    return code

"""生成一个订单号: SF32143432432432"""
"""生成一个订单号: TB32143432432432"""
"""生成一个订单号: YT20230921458946"""

print(get_code())
print(get_code(5))
print(get_code(6))
print(time.time()) # 1695263424.6257682
print(time.strftime('%Y%m%d%H%M%S')) # 1695263424.6257682
print(get_out_order()) # SF20230921103353YUoA SF202309211033593HIF

import time


#  生成订单号
def get_order_code():
    #  年月日时分秒+time.time()的后7位
    order_no = str(time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) + str(time.time()).replace('.', '')[-7:])
    return order_no


print(get_order_code())

 

os模块

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

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.system("bash command")  运行shell命令,直接显示
os.popen("bash command).read()  运行shell命令,获取执行结果
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd

os.path
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的大小

注意:os.stat('path/filename') 获取文件/目录信息 的结构说明

stat 结构:

st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

os模块属性

os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

 运用:

# os模块是与操作系统交互的一个接口
import os # operate system
"""一次只能创建一层目录"""
# make directory
os.mkdir('myfirst')    # 生成单级目录;相当于shell中mkdir dirname
os.mkdir('myfirst')    # 生成单级目录;相当于shell中mkdir dirname

os.makedirs('myfirst/mysecond/mythird')    # 可生成多层递归目录
# rm:remove
os.rmdir('aaa')   #  删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

os.removedirs(r'D:\Python27\day23\myfirst\mysecond')    # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

res=os.listdir(r'D:\Python27\day23\aaa')    # 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
print(res) # ['.qaz', '1.txt', '2.txt', '3.txt', 'abc']

os.remove(r'D:\Python27\day23\aaa\1.txt')  # 删除一个文件
os.rename(r"D:\Python27\day23\bbb\2.txt", r"D:\Python27\day23\bbb\2222.txt")  # 重命名文件/目录
"""修改文件内容"""

res=os.stat(r'D:\Python27\day23\bbb\3.txt')  # 获取文件/目录信息
print(res)

"""
os.stat_result(st_mode=33206, st_ino=3659174698001585, st_dev=2316620894, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1695264600, st_mtime=1695264600, st_ctime=1695264600)
st_atime
st_mtime
st_ctime
"""
# bash解释器 command dir tasklist  print()
# python-----》解释器
# shell脚本-----》python脚本
# index.sh         ------> index.py
# index.sh----->/bin/bash----->python.exe
os.system("tasklist")  # 运行shell命令,直接显示 python linux:
os.system("dir")  # 运行shell命令,直接显示 python linux:

res=os.popen("tasklist").read() #   运行shell命令,获取执行结果
print(res)

res=os.getcwd()  # 获取当前工作目录,即当前python脚本工作的目录路径
print(res) # D:\Python27\day23
# ch: change directory
# cd:D:\Python27\day23\bbb
os.chdir(r"D:\Python27\day23\bbb")  # 改变当前脚本工作目录;相当于shell下cd
res = os.getcwd()
print(res)

os.mkdir('aaa')


os.path
res=os.path.abspath(r'D:\Python27\day23\bbb') #  返回path规范化的绝对路径os.path.split(path) 将path分割成目录和文件名二元组返回
res=os.path.abspath(r'D:\Python27\day23\bbb\3.txt') #  返回path规范化的绝对路径os.path.split(path) 将path分割成目录和文件名二元组返回
# absolute 绝对的
# relative 相对的
# 绝对定位 相对定位
res=os.path.abspath(r'bbb') #  返回path规范化的绝对路径os.path.split(path) 将path分割成目录和文件名二元组返回
print(res) # D:\Python27\day23\bbb D:\Python27\day23\bbb\3.txt D:\Python27\day23\bbb

res=os.path.dirname(r'D:\Python27\day23\bbb\3.txt') # 返回path的目录。其实就是os.path.split(path)的第一个元素
res=os.path.dirname(os.path.dirname(r'D:\Python27\day23\bbb\3.txt')) # 返回path的目录。其实就是os.path.split(path)的第一个元素
res=os.path.dirname(r'D:\Python27\day23\bbb') # 返回path的目录。其实就是os.path.split(path)的第一个元素
res=os.path.dirname(r'D:\Python27\day23') # 返回path的目录。其实就是os.path.split(path)的第一个元素
res=os.path.dirname(os.path.dirname(os.path.dirname(r'D:\Python27\day23\bbb\3.txt')))
print(res) # D:\Python27\day23\bbb

res=os.path.basename(r'D:\Python27\day23\bbb\3.txt') # 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
print(res) # 上传图片的时候会用到  D:\Python27\day23\bbb\1.png # 验证后缀名,png jpg jpeg

"""它可以判断文件,也可以判断文件夹"""
res=os.path.exists(r'D:\Python27\day23\bbb\3.txt')  # 如果path存在,返回True;如果path不存在,返回False
res=os.path.exists(r'D:\Python27\day23\bbb\aaaa')  # 如果path存在,返回True;如果path不存在,返回False
print(res)

if not os.path.exists(r'D:\Python27\day23\ccc'):
    os.mkdir(r'D:\Python27\day23\ccc')

res=os.path.isabs(r'D:\Python27\day23\ccc')  # 如果path是绝对路径,返回True
res=os.path.isabs(r'ccc')  # 如果path是绝对路径,返回True
print(res)

res=os.path.isfile(r'D:\Python27\day23\bbb\3.txt')  # 如果path是一个存在的文件,返回True。否则返回False
res1=os.path.isdir(r'D:\Python27\day23\bbb\3.txt')  # 如果path是一个存在的文件,返回True。否则返回False
print(res)
print(res1)

base_dir = r'D:\Python27\day23'  # // \ /
path = base_dir + '\\' + 'bbb' + '\\' + 'aaa' # D:\Python27\day23\bbb\aaa
print(path)
"""会检测系统,Windows \\ linux // """
"""路径的拼接,不用考虑路径分隔符"""
# res=os.path.join(base_dir, 'bbb', 'aaa')  # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
res=os.path.join(base_dir, 'bbb', 'aaa', 'qqq', 'aaa', 'zzz', 'xxx')  # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
print(res)

res=os.path.getatime(r'D:\Python27\day23\bbb\3.txt')  # 返回path所指向的文件或者目录的最后访问时间
res1=os.path.getmtime(r'D:\Python27\day23\bbb\3.txt')  # 返回path所指向的文件或者目录的最后修改时间
print(res, res1)
# 0字节
res2=os.path.getsize(r'D:\Python27\day23\bbb\3.txt') # 返回path的大小
print(res2)
"""判断文件是否为空"""

 

sys模块

sys模块是与python解释器交互的一个接口

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

异常处理

import sys
try:
    sys.exit(1)
except SystemExit as e:
    print(e)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值