import re
from datetime import datetime, timezone, timedelta
def to_timestamp(dt_str, tz_str):
# 时间
dt_now = datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')
#时区
tz_num = int(re.match('\w{3}([+|-]\d+):00',tz_str).groups()[0])
tz_utc = timezone(timedelta(hours = tz_num))
#utc时间,强制设置时区
dt_now = dt_now.replace(tzinfo=tz_utc)
return dt_now.timestamp()
# 测试:
t1 = to_timestamp('2015-6-1 08:10:30', 'UTC+7:00')
assert t1 == 1433121030.0, t1
t2 = to_timestamp('2015-5-31 16:10:30', 'UTC-09:00')
assert t2 == 1433121030.0, t2
print('ok')
#请写一个能处理去掉=的base64解码函数:
#在python中字符串和字节编码序列之间的转换一定要用utf-8编码和解码
import base64
def safe_base64_decode(s):
if len(s) % 4 == 0:
return base64.b64decode(s)
else:
remain = 4 - (len(s) % 4)
a = '='
a *= remain
s = s.decode('utf-8')
s += a
return base64.b64decode(s.encode('utf-8'))
# 测试:
assert b'abcd' == safe_base64_decode(b'YWJjZA=='), safe_base64_decode('YWJjZA==')
assert b'abcd' == safe_base64_decode(b'YWJjZA'), safe_base64_decode('YWJjZA')
print('ok')
# -*- coding: utf-8 -*-
import base64, struct
def bmp_info(data):
info = struct.unpack('<ccIIIIIIHH',data[:30])
if (info[0] , info[1]) == (b'B',b'M'):
return {
'width': info[6],
'height': info[7],
'color': info[9]
}
else:
return 'NOT BMP FILE'
def bmp_check(file):
with open(file,'rb') as f:
info = struct.unpack('<ccIIIIIIHH',f.read(30))
if (info[0], info[1]) == (b'B', b'M'):
return {
'width': info[6],
'height': info[7],
'color': info[9]
}
else:
return 'NOT BMP FILE'
#print(struct.unpack('<ccIIIIIIHH',bmp_data[:30]))
# 测试
bi = bmp_check(r'')#文件路径
print(bi)
assert bi['width'] == 28
assert bi['height'] == 10
assert bi['color'] == 16
print('ok')
# -*- coding: utf-8 -*-
import hashlib
db = {
'michael': 'e10adc3949ba59abbe56e057f20f883e',
'bob': '878ef96e86145580c38c87f0410ad153',
'alice': '99b1c2188db85afee403b1536010c2c9'
}
def login(user, password):
md5 = hashlib.md5()
md5.update(password.encode('utf-8'))
return md5.hexdigest() == db[user]
# 测试:
assert login('michael', '123456')
assert login('bob', 'abc999')
assert login('alice', 'alice2008')
assert not login('michael', '1234567')
assert not login('bob', '123456')
assert not login('alice', 'Alice2008')
print('ok')
# -*- coding: utf-8 -*-
import hashlib, random
def get_md5(s):
return hashlib.md5(s.encode('utf-8')).hexdigest()
class User(object):
def __init__(self, username, password):
self.username = username
self.salt = ''.join([chr(random.randint(48, 122)) for i in range(20)])
self.password = get_md5(password + self.salt)
db = {
'michael': User('michael', '123456'),
'bob': User('bob', 'abc999'),
'alice': User('alice', 'alice2008')
}
def login(username, password):
user = db[username]
return user.password == get_md5(password+user.salt)
# 测试:
assert login('michael', '123456')
assert login('bob', 'abc999')
assert login('alice', 'alice2008')
assert not login('michael', '1234567')
assert not login('bob', '123456')
assert not login('alice', 'Alice2008')
print('ok')