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)