22.时间模块+random,os,sys模块+打印进度条

本文详细介绍了Python中时间模块time和datetime的使用,包括时间格式转换和日期操作。此外,还探讨了random模块在生成验证码场景的应用,os模块如何获取文件名和目录名,特别是Python3.5以后的BASE_DIR新写法。同时,讲解了sys模块的基本用法以及如何打印进度条。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.时间模块

1.time

时间分为三种格式:
import time
#1.时间戳:从1970年到现在经过的秒数
#作用:用于时间间隔的计算
print(time.time())
#2.按照某种格式显示时间:
#作用:用于时间的展示
print(time.strftime('%Y-%m-%d %H-%M-%S %p'))#2021-07-17 14-19-31 PM 
#年月日时分秒下午PM上午AM
print(time.strftime('%Y-%m-%d %X %p'))#2021-07-17 14:20:34 PM 时分秒简写为%X
#3.结构化时间
#用户单独获取时间的某一部分
res=time.localtime()
print(res)
#time.struct_time(tm_year=2021, tm_mon=7, tm_mday=17, tm_hour
# =14, tm_min=22, tm_sec=30, tm_wday=5, tm_yday=198, tm_isdst=0)
print(res.tm_year)#2021

时间格式格式的转换

格式字符串形式<===>结构化形式<===>时间戳形式
#格式化字符串形式format string------>结构化struct------->时间戳timestamp
#2021-07-17 16:03:30
struct_time=time.strptime('2021-07-17 16:03:30','%Y-%m-%d %H:%M:%S')
print(struct_time)
#time.struct_time(tm_year=2021, tm_mon=7, tm_mday=17, tm_hour=16,
# tm_min=3, tm_sec=30, tm_wday=5, tm_yday=198, tm_isdst=-1)
#格式化字符串形式转结构化形式

timestamp=time.mktime(struct_time)
print(timestamp)#1626509010.0 结构化转时间戳

timestamp=timestamp+7*86400
print(timestamp)#1627113810.0 增加七天

#时间戳timestamp------>结构化struct------->格式化字符串形式format string

res=time.strftime('%Y-%m-%d %X',time.localtime(timestamp))
print(res)#2021-07-24 16:03:30


其他可能会用到的方法,了解即可
print(time.asctime())#Sat Jul 17 21:08:00 2021 linux常用的时间展示形式

print(datetime.datetime.now())#2021-07-17 21:09:44.693401
print(datetime.datetime.utcnow())#2021-07-17 13:09:44.693401
#当地标准时间,比世界标准时间提前8小时

print(datetime.datetime.fromtimestamp(1627113810))
#2021-07-24 16:03:30 时间戳直接转成格式化字符串

2.datetime

import datetime
print(datetime.datetime.now())#2021-07-17 14:28:14.134401

print(datetime.datetime.now()+datetime.timedelta(days=3))
#2021-07-20 14:29:36.909401 三天后的时间,用于时间的计算
#用于时间加减的计算
#鼠标放到datetime.timedelta(),点击Ctrl键,可以跳转到此方法源码
#查看到源码,得知参数信息:
#days、seconds、microseconds、milliseconds、 minutes、hours、weeks:、fold:

2.random模块

import random

print(random.random())
#0.9487121778268897  产生(0,1)之间float的随机小数

print(random.randint(1,10))#3  [1,10]之间的随机整数

print(random.randrange(1,10))#3 [1,10)之间的随机整数

print(random.choice([1,'23',[4,5]]))#[4, 5]  1或'23'或[4,5]

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

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

item=[1,3,6,9,22,7]
random.shuffle(item)#打乱item顺序,相当于“洗牌”
print(item) #[7, 22, 1, 6, 9, 3]

应用案例:验证码

import random


def make_code(size):
    res = ''
    for i in range(size):
        a = chr(random.randint(65, 90))  # 从26个大写字母中取一个
        b = str(random.randint(0, 9))  # 从10个数字里随机取一个

        c = random.choice([a, b])
        res += c
    return res


print(make_code(5))

3.os模块

import os

# res=os.listdir(r'F:\S14\day22')
#获取一个文件夹下所有文件名和文件夹名
#获取当前同级目录的文件名和文件夹名
res=os.listdir(r'.')
print(res)#['__pycache__', '时间模块.py', 'random模块.py', 'os模块.py']

#获取上一级目录的文件名和文件夹名
res=os.listdir(r'..')
print(res)
#['.idea', 'day4', 'day5', 'day6', 'day7', 'day8', 'day9', 'day10',
# 'day11', 'day12', 'day13', 'day14', 'day15', 'day16', 'day17',
# 'day18', 'day19', 'day20', 'day21', 'day22']

#获取指定文件的大小,单位:字节
size=os.path.getsize(r'F:\S14\day22\random模块.py')
print(size)#937

os.rename("oldname","newname") #重命名文件/目录
os.remove(r'') #删除一个文件

取文件名 目录名

print(__file__)# F:/S14/day22/os模块.py
print(os.path.abspath(__file__))# F:\S14\day22\os模块.py

#取文件名 目录名
res=os.path.split(r'c/d/f/aa.txt')
print(res)#('c/d/f', 'aa.txt')
res=os.path.dirname(r'c/d/f/aa.txt')
print(res)#c/d/f
res=os.path.basename(r'c/d/f/aa.txt')
print(res)#aa.txt
#路径拼接

print(os.path.join('a','b','c','d'))#a\b\c\d

python3.5以后,BASE_DIR项目目录的新写法

from pathlib import Path
BASE_DIR=Path(__file__).parent.parent
print(BASE_DIR)#F:\S14

#路径拼接
res=Path('a/b/c')/'d/e.txt'
print(res)#a\b\c\d\e.txt

4.sys

传统传参都是通过程序内部传参,运行程序时,从程序外传参到程序内
import sys
#传统传参都是通过程序内部传参,运行程序时,从程序外传参到程序内
#sys.argv#获取的是解释器后的参数值
print(sys.argv)

5.打印进度条

import time


def progress(percent):
    if percent > 1:
        percent = 1
    res = int(50 * percent) * '#'
    print('\r[%-50s]%d%%' % (res, int(100 * percent)), end='')


recv_size = 0
total_size = 33333

while recv_size < total_size:
    time.sleep(0.3)  # 模仿网速慢
    recv_size += 1024
    # 打印进度条
    # print(recv_size)
    percent = recv_size / total_size
    progress(percent)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值