-*- encoding:utf-8 -*-
# 1、计算两个格式化时间之间差了多少年月日时分秒
import time
true_time = time.mktime(time.strptime('2017-09-11 08:30:00', '%Y-%m-%d %H:%M:%S'))
time_now = time.mktime(time.strptime('2017-09-12 11:00:00', '%Y-%m-%d %H:%M:%S'))
dif_time = time_now - true_time
struct_time = time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒' % (struct_time.tm_year - 1970, struct_time.tm_mon - 1,
struct_time.tm_mday - 1, struct_time.tm_hour,
struct_time.tm_min, struct_time.tm_sec))
# # 2、计算当前时间所在月1号的时间戳
# 方法一:
import time
def func2():
t = time.time()
struct_time = time.gmtime() # 把日期和时间转换为格林威治(GMT)时间
d = struct_time.tm_mday
c = t - (d-1) * 24 * 60 * 60
return c
print(func2())
# 方法二:
import time
def func1():
print("当前时间:"+time.strftime('%Y-%m-%d %H:%M:%S'))
print("当前时间戳:%f"% time.time())
t1 = time.strftime('%Y-%m-{} %H:%M:%S'.format("1"))
t2 = time.strptime(t1,'%Y-%m-%d %H:%M:%S')
t3 = time.mktime(t2)
print("本月一号的时间戳是%f"%t3)
func1()
# # 3、分别列出给定目录下所有的文件和文件夹
import os
print(os.listdir('D:\pythonweekend24\day07'))
# # 4、获取当前文件所在目录
import os
print(os.getcwd())
# # 5、在当前目录下创建一个文件夹、在这个文件夹下创建一个文件
import os
os.mkdir('dirname')
f = open('dirname\\new.txt',encoding="utf8",mode="w")
f.close()
# # 6、计算某路径下所有文件和文件夹的总大小
import os
l1 =[]
def get_size(path):
filelist = os.listdir(path) #获取path目录下的所有文件。
for filename in filelist:
tempath = os.path.join(path,filename) # 形成path与filename组合后的路径。
if os.path.isdir(tempath): # 判断是否为一个目录。
get_size(tempath) #是目录就继续递归查找。
elif os.path.isfile(tempath): #判断是否为文件
filesize = os.path.getsize(tempath) #是文件,则获取相应文件的大小
print("%s的子文件大小:%d字节"%(path,filesize) )
l1.append(filesize) # 将文件的大小添加到列表中
path = input("请输入路径:").strip()
get_size(path)
print('目录%s中文件的总大小为%d字节' % (path, sum(l1)))
# # 7、校验两个文件的一致性
import hashlib
def file_hashlib(file):
ret = hashlib.md5()
with open(file, mode='rb') as f1:
for line in f1:
ret.update(line)
return ret.hexdigest()
def compare (f1,f2):
if file_hashlib(f1) == file_hashlib(f2):
print("两个文件一致")
else:
print("两个文件不一致")
compare("下载文件","源文件")
# # 8、加盐的密文登陆
import hashlib
def add_salt(arg): # 定义带加盐的的加密函数
add_salt_password = hashlib.md5(bytes('salt', encoding="utf-8"))
add_salt_password.update(bytes(arg, encoding="utf-8"))
return add_salt_password.hexdigest() # 返回加密的数据
def login(usr,password): # 登录函数
with open("usr", encoding="utf-8",mode='r') as f:
for line in f:
u,p = line.strip().split("|")
if usr == u and add_salt(password) == p: # 登录时验证用户名和加密的密文跟之前是否一致。
return True
def register(usr,password):
with open("usr", encoding="utf-8", mode="a") as f:
t = usr+"|"+add_salt(password) + "\n"
f.write(t)
while 1:
dict ={"用户登录":login,"用户注册":register}
for i, element in enumerate(dict, 1):
print(i, element)
n = input('请您选择:')
if n == '1':
usr = input("输入用户名:").strip()
password = input("输入密码:").strip()
r = login(usr,password)
if r == True:
print("登录成功")
else:
print("登录失败")
elif n == '2' :
usr = input("输入用户名:").strip()
password = input("输入密码:").strip()
register(usr, password)
else:
print("账号不存在")
# 9、完成一个既可以向文件输出又可以向屏幕输出的日志设置
import logging
# print(logging)
# 创建logging对象
logger = logging.getLogger()
# 创建文件对象
fh1 = logging.FileHandler('a1.log', encoding='utf-8')
fh2 = logging.FileHandler('a2.log', encoding='utf-8')
# 创建屏幕对象
sh = logging.StreamHandler()
formater1 = logging.Formatter(
fmt='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', # 显示格式
datefmt='%Y-%m-%d %H:%M:%S',)
formater2 = logging.Formatter(
fmt='%(asctime)s %(levelname)s %(message)s', # 显示格式
datefmt='%Y-%m-%d %H:%M:%S',)
formater3 = logging.Formatter(
fmt='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', # 显示格式
datefmt='%Y-%m-%d %H:%M:%S',)
# 给对象绑定格式
fh1.setFormatter(formater1)
fh2.setFormatter(formater2)
sh.setFormatter(formater3)
# 给logger对象添加其他对象
logger.addHandler(fh1)
logger.addHandler(fh2)
logger.addHandler(sh)
# 设置logger级别
logger.setLevel(40)
sh.setLevel(40) # 按照logger对象设置的级别显示
fh1.setLevel(30)
fh2.setLevel(30)
logging.debug('调试模式') # 10
logging.info('正常运行') # 20
logging.warning('警告') # 30
logging.error('错误') # 40
logging.critical('系统崩了') # 50