1.计算时间差功能
如果时间差大于1年,显示X年X月;如果时间差大于1个月,显示X月X日;譬如显示5天前、3小时前、30分钟前、40秒前,多用于论坛发帖时间显示。
import time
def time_diff(time_start, time_end, fmt="%Y-%m-%d %H:%M:%S"):
stamp_func = lambda t: time.mktime(time.strptime(t, fmt))
t1 = stamp_func(time_end)
t2 = stamp_func(time_start)
t = t1 - t2
ret = time.gmtime(t)
return (ret.tm_year - 1970, ret.tm_mon - 1, ret.tm_mday - 1, ret.tm_hour, ret.tm_min, ret.tm_sec)
t = time_diff('2020-7-1 13:25:32', '2020-7-8 13:5:32')
print(t) # (0, 0, 6, 23, 40, 0)
# 后续显示可根据返回的元祖进行判断。
2.发红包,接收两个参数(金额,个数)
发n个红包,每个人取到m块钱的概率是一样的。
import random
def lucky_money(money, num):
ret = random.sample(range(1, money * 100), num - 1)
ret.sort()
ret.insert(0, 0)
ret.append(money * 100)
for i in range(len(ret) - 1):
money = ret[i + 1] - ret[i]
yield money / 100
for money in lucky_money(200, 10):
print(money)
# 40.99
# 8.45
# 0.37
# 6.35
# 11.21
# 19.87
# 17.7
# 51.87
# 18.19
# 25.0
3.统计文件夹文件的总大小
如果这个文件夹中还有文件夹,应该继续到这个文件夹中去计算。
递归
import os
def get_size(path):
sum_size = 0
name_lst = os.listdir(path)
for name in name_lst:
name_path = os.path.join(path, name)
if os.path.isdir(name_path):
sum_size += get_size(name_path)
elif os.path.isfile(name_path):
sum_size += os.path.getsize(name_path)
return sum_size
循环
import os
lst = [r"E:\python3.6.5\myProject\api_blink"]
sum_size = 0
while lst:
path = lst.pop()
name_lst = os.listdir(path)
for name in name_lst:
name_path = os.path.join(path, name)
if os.path.isdir(name_path):
lst.append(name_path)
elif os.path.isfile(name_path):
sum_size += os.path.getsize(name_path)
print(sum_size)
4.获取当前文件所在目录的父目录
import os
base_path = os.path.dirname(os.path.dirname(__file__))
print(base_path)
5.用 Python 创建一个目录结构
├── nancy
│ ├── app
│ │ ├── user.py
│ │ └── products.py
│ ├── db
│ │ └── model.py
import os
os.makedirs(r"nancy\app")
os.makedirs(r"nancy\db")
open(r"nancy\app\user.py", "w").close()
open(r"nancy\app\products.py", "w").close()
open(r"nancy\db\model.py", "w").close()