文章目录

  • time
  • 示例
  • 转化方法表
  • 格式化时间参数
  • random
  • 示例
  • 练习
  • os - 系统相关模块
  • 示例
  • sys - python解释器相关
  • 示例



time

示例

# 时间戳, timeStamp
time.time() # 1594665462.3188128

# 结构化时间, structTime
# time.struct_time(tm_year=2020, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=37, tm_sec=42, tm_wday=1, tm_yday=196, tm_isdst=0)
time.localtime() # 北京时间 2020-07-14 02:37:42, 参数为秒偏移量, 基准是 1970 年 1 月 1 日
time.gmtime() # 伦敦时间, 其他同上

# 格式化时间, formatTime
time.strftime("%Y-%m-%d %H:%M:%S") # 2020-07-14 02:59:36

转化方法表

描述

方法

时间戳 -> 结构化时间

time.localtime([timtStamp]), 不填获取当前时间的结构化时间

结构化时间 -> 格式化时间

time.strftime(formatSpec[, structTime]), 不填获取当前时间的格式化时间

格式化时间 -> 结构化时间

time.strptime(structTime, formatSpec), “%Y-%m-%d %H:%m:%S”

结构化时间 -> 时间戳

time.mktime(structTime)


格式化时间参数

格式化字符

含义

%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

当前时区的名称

%%

%号本身


random

示例

# 随机生成一个0-1之间的小数
random.random()

# 随机生成一个1-3之间的小数
random.uniform(1,3)

# 随机生成一个1-3整数
random.randint(1,3)

# 随机生成一个1-10以内, 步长为2的数字
random.randrange(1,10,2)

# 根据ascii码先生成随机数, 再转为字母
chr(random.randint(65,90)) # 大写A-Z
chr(random.randint(97,122)) # 小写a-z

# 随机选择一个返回, 参数为 list, tumple, iterabler 均可
random.choice([1,'23',[4,5]])  # 1或者23或者[4,5]

# 随机选择多个返回
random.sample([1,'23',[4,5]], 2) # 列表元素任意2个组合

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

练习

import random

# 纯数字验证码, n 为验证码位数
def func1(n):
    s = ""

    while n > 0:
        r = str(random.randint(0, 9))
        s += r
        n -= 1
       
    return s

# 数字+字母验证码, n 为验证码位数
def func2(n):
    s = ""

    while n > 0:
        # 大写字母
        a1 = chr(random.randint(65, 90))
        # 小写字母
        a2 = chr(random.randint(97, 122))
        num = str(random.randint(0, 9))
        # 多选一
        s += random.choice([a1, a2, num])
        n -= 1

    return s

# 发红包, x 为红包总金额, y 为红包个数
def func3(x, y):
    # 一个区间中, 分割点的数量
    # 例: 5 个红包, 需要 4 个分割点
    count = y-1

    # sample, 可在一个迭代对象中, 随机选多个元素
    # 在数字区间内, 选多个数字作为分隔点, 并排序
    l = random.sample(range(1, x), count)
    l.sort()

    # 定义一个列表用于存储结果
    r = []

    # 使用分隔点处理红包金额
    # 处理第一个金额
    r.append(l[0])
    # 处理中间的金额
    for i in range(1, count):
        r.append(l[i]-l[i-1])
    # 处理最后一个金额
    r.append(x-l[count-1])

    # 将结果返回
    return r

if __name__ == "__main__":
    print(func1(4))
    print(func2(6))
    print(func3(100, 4))

os - 系统相关模块

示例

# 获取工作目录 - pwd
print(os.getcwd())

# 变更工作目录 - cd
os.chdir('..')
os.chdir('/home/op/tools/')

# 展示目录下内容, 返回值为列表 - ls
os.listdir()

# 创建单独目录aa - mkdir
os.mkdir('aa')

# 递归创建目录 - mkdir -p /a/b/c
os.mkdirs('/a/b/c')

# 删除单独目录aa - rm -rf aa
os.rmdir('aa')

# 递归删除目录, 向上递归, 若为空则删除, 慎用
os.removedirs()

# 删除文件 - rm 
os.remove(file_name)

# 重命名文件 - mv a a_bak
os.rename(old_name, new_name)

# 系统路径分隔符, win下为"\\",Linux下为"/
os.sep

# 系统行终止符, win下为"\t\n",Linux下为"\n
os.linesep

# 系统分割文件路径的字符, win下为;,Linux下为:
os.pathsep

# 输出字符串指示当前使用平台, win->'nt'; Linux->'posix'
os.name

# 获取系统环境变量
os.environ

# 运行shell命令并显示结果
os.system("ls -l")

# 运行shell命令并保存结果
ret = os.popen("bash command")
ret.read()

# 绝对路径
os.path.abspath()

# 上一级目录
os.path.dirname()

# 获取文件名
os.path.basename()

# (file_path,file_name) --> (os.path.dirname(),os.path.basename())
os.path.split()

# 判断路径是否存在
os.path.exists()

# 判断是否为绝对路径
os.path.isabs()

# 使用系统的路径连接符, 把字符串拼成路径
os.path.join('/home','op','tools')

# 返回path的大小
os.path.getsize('path')

sys - python解释器相关

示例

# 环境变量, 在目录内的包和模块才能导入
print(sys.path)

# 打印参数, 返回值是list, 可以加索引分别取值
print(sys.argv)
'''
	python3 /xx/xx/a.py 1 2 3 
	sys.argv[0] 为 /xx/xx/a.py

	python3 a.py 1 2 3 
	sys.argv[0] 为 a.py
	
	sys.argv[1] 为 1
	sys.argv[2] 为 2
	sys.argv[3] 为 3
	
'''

# 打印已经导入的所有模块的名字
print(sys.modules)

# 加退出码, 异常退出259
sys.exit(259)

# 退出提示
sys.exit('error')