文章目录
- 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')