random模块 os模块 sys模块

time模块

## 跟时间打交道的模块,以后在Python中所有跟时间相关的,首先先想到time和datetime模块
​
import time
"""
    1. 时间戳的形式:就是一个数字,秒数
    2. 结构化时间:它是让计算机看的,进行时间之间的相互转化
    3. 字符串时间(格式化时间): 2023-09-01 11:11:11
"""
​
# 后续学了MySQL数据库,表中需要存储时间,要么存时间戳,要么存格式化时间
# 时间戳可以转为格式化时间(Python去转化)
​
掌握时间之间的转化:
    时间戳------------>结构化时间---------------->格式化时间
    
# 格式化时间:
res=time.strftime('%Y-%m-%d %H:%M:%S')
res=time.strftime('%Y-%m-%d %X %U') 
 2023-09-01 11:11:11
 
​
# python中时间日期格式化符号
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
​
# 结构化时间
res=time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,
          tm_hour=13, tm_min=59, tm_sec=37, 
                 tm_wday=0, tm_yday=205, tm_isdst=0)
​
print(res.tm_year)  # res[0]
print(res.tm_yday)

datetime模块

import datetime
​
datetime.date.today() # 年月日
datetime.datetime.today() # 年月日 十分秒
t_now=datetime.datetime.now() # 年月日 十分秒
​
### 日期差
time_delta=datetime.timedelta(days=7, hours=2, week=3, minutes=20)
t_now + time_delta # 
t_now - time_delta # 

今日内容概要

  • random模块(跟随机数相关的)

  • os模块(跟文件、文件夹、路径等相关的,重要)

  • sys模块(跟解释器相关的)

  • 序列化模块(重要,json格式的数据,跨语言传输,json模块、pickle模块)

  • hashlib模块(加密处理的)

  • 日志模块

  • 第三方模块的下载与安装

今日内容详细

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模块是与操作系统交互的一个接口
​
import os
​
make directory
os.mkdir('firstname/mysecond')  # 生成单级目录,意思是一次运行只能创建这一个目录文件,不能同时在它下面创建子目录文件
​
os.makedirs('myfirst/mysecond/mythird') # 递归创建,可以创建多个
​
os.rmdir('myfirst/mysecond/mythird')  # 只能删除空的文件夹,如果有子文件夹就会报错无法删除
​
os.removedirs(r'firstname\mysecond')  # 递归删除,如果为空文件夹就将他删除,如果删完上一级文件夹也空了,也删除一直类推
​
print(os.listdir('../pythonProjectday23'))  # 可以列出一个文件下的所有文件名然后以列表输出,包括隐藏文件
​
os.remove(r'D:\pythonProject\pythonProjectday23\myfirst\mysecond\hello.html')  # 删除一个文件,不能删除文件夹
​
os.rename('myfirst', 'myfirst_again')  # 重命名文件/目录
​
print(os.stat('myfirst_again'))
'''
os.stat_result(st_mode=16895, st_ino=402509216696241333, st_dev=3226308220, st_nlink=1, st_uid=0, st_gid=0,
st_size=0, st_atime=1695293856, st_mtime=1695293435, st_ctime=1695291196)
​
st_atime=1695293856--------->文件的访问时间(后面所显示的为时间戳)
st_mtime=1695293435--------->文件的修改时间
st_ctime=1695291196--------->文件的创建时间
'''
​
bash解释器 command
shell脚本------>python脚本
index.sh------>index.py
os.system('bash command')  # 实行shell命令直接显示
os.system('tasklist')  # 调出电脑工作的软件列表
​
res = os.popen('tasklist').read()
print(res)  # 这个是拿到运行结果,上面的只是显示出来没有拿到结果
​
res = os.getcwd()  # 获得当前工作目录
print(res)  # 可以看见当前你在哪个路径下面 D:\pythonProject\pythonProjectday23
​
os.chdir('myfirst_again')  # 改变当前工作目录,切换到另一个文件目录下面
res = os.getcwd()
print(res)  # D:\pythonProject\pythonProjectday23------->D:\pythonProject\pythonProjectday23\myfirst_again
​
absolute 绝对的
relative 相对的
res = os.path.abspath(r'mysecond')  # 返回path规范化的绝对路径
print(res)  # D:\pythonProject\pythonProjectday23\myfirst_again\mysecond
​
res = os.path.dirname(
    r'D:\pythonProject\pythonProjectday23\myfirst_again\mysecond')  # 返回path目录,就是os.path.split(path)的第一个目录
print(res)  # D:\pythonProject\pythonProjectday23\myfirst_again 不包括本身查找的文件的文件路径
​
res = os.path.basename('D:\pythonProject\pythonProjectday23\myfirst_again\mysecond')  # 返回path最后的文件名
print(res)  # mysecond
​
res = os.path.exists(r'D:\pythonProject\pythonProjectday23\myfirst_again\mysecond')
print(res)  # True 检测该路径是否有文件存在,有的话返回True,反之False(文件和文件夹都可以判断)
​
res = os.path.isabs(r'myfirst_again\mysecond')
print(res)  # False 判断输入的路径是否为绝对路径,是的话返回True,反之False
​
res = os.path.isfile(r'D:\pythonProject\pythonProjectday23\myfirst_again\mysecond')
res1 = os.path.isdir(r'D:\pythonProject\pythonProjectday23\myfirst_again\mysecond')
print(res)  # False 检测地址是不是一个文件,是的话返回True,反之False(只能判断文件)
print(res1)  # True 检测地址是不是一个文件夹,是的话返回True,反之False(只能判断文件夹)
​
base_dir = r'D:\pythonProject\pythonProjectday23'  # Linux系统的分隔符又不一样,为/。所以这个方法不好
path = base_dir + '\\' + 'myfirst_again' + '\\' + 'mysecond'
print(path)  # D:\pythonProject\pythonProjectday23\myfirst_again\mysecond
res = os.path.join(base_dir, 'myfirst_again', '.qez')  # 拼接路径,第一个绝对路径之前的参数被忽略,它可以检测系统,自动用系统的分隔符
print(res)  # D:\pythonProject\pythonProjectday23\myfirst_again\.qez
​
res1 = os.path.getatime(r'D:\pythonProject\pythonProjectday23\myfirst_again\mysecond')  # 返回path所指向的文件或者目录的最后访问时间
res2 = os.path.getmtime(r'D:\pythonProject\pythonProjectday23\myfirst_again\mysecond')  # 返回path所指向的文件或者目录的最后修改时间
print(res2,res1)
​
res = os.path.getsize(r'D:\pythonProject\pythonProjectday23\myfirst_again\mysecond')  # 返回目标文件的大小
print(res)  # 返回的是字节!!!

查看小视频练习

"""
1. jerry老师.mp4
2. kevin老师.mp4
3. tank老师.mp4
4. tony老师.mp4
"""
import os
​
# print(__file__) # D:/Python27/day23/03 播放小视频练习.py
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
data_movie_list_path=os.path.join(BASE_DIR, '小视频') #
data_movie_list=os.listdir(r'%s' % data_movie_list_path)
print(data_movie_list)  # ['jerry老师.mp4', 'kevin老师.mp4', 'tank老师.mp4', 'tony老师.mp4']
​
while True:
    for i, j in enumerate(data_movie_list):
        print(i + 1, j)
​
    choice = input('请输入你想看的小视频序号:').strip()
​
    # 1. 判断输入的内容必须是数字
    if choice.isdigit():
        # 2. 输入的数字范围必须是文件的个数
        # 1 2 3 4 5 6
        choice = int(choice)
        if choice in range(1, len(data_movie_list)+1):
            # 3. 拼接成: D:\Python27\day23\小视频\jerry老师.mp4
            video_file_path=os.path.join(data_movie_list_path, data_movie_list[choice-1])
            print(video_file_path)
            # 4. 播放:读取文件
            with open(video_file_path, 'r', encoding='utf-8') as f:
                print(f.read())
                
                
 os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

sys模块

sys模块是与python解释器交互的一个接口
​
sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version        获取Python解释程序的版本信息
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
​
​
print(sys.argv)
try:
    username = sys.argv[1]
    password = sys.argv[2]
​
except Exception as e:
    print('参数异常')
​
print(username)
print(password)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值