import hashlib
import os
import time
from datetime import datetime
from datetime import timedelta
import base64
import zlib
def zlib_compress(data):
return base64.b64encode(zlib.compress(data))
def zlib_decompress(data_str):
return zlib.decompress(base64.b64decode(data_str))
def datetime_to_timestamp(d_time=None):
""" 将datetime类型转换为时间戳 """
return time.mktime(d_time.timetuple())
def md5(string):
""" 获取字符串的MD5值 """
if isinstance(string, str):
m = hashlib.md5()
m.update(string.encode('utf-8'))
return m.hexdigest()
else:
return None
def get_file_md5(file_path, mode=0):
""" 获取文件的MD5值 """
hash_obj = hashlib.md5()
# 获取本地文件MD5
if mode == 0:
with open(file_path, 'rb') as file_obj:
while True:
b = file_obj.read(8096)
if not b:
break
hash_obj.update(b)
# 获取django file_obj MD5
else:
for chunk in file_path.chunks():
hash_obj.update(chunk)
return hash_obj.hexdigest()
def timestr_to_timestamp(timestr):
"""将时间字符串(2019-01-21 00:00:00)转时间戳"""
return time.mktime(time.strptime(timestr, '%Y-%m-%d %H:%M:%S'))
def date_str_to_datetime(date):
"""将2019-01-21字符串格式日期转化为datetime格式"""
date1 = date.split("-")
date_dt = datetime(int(date1[0]), int(date1[1]), int(date1[2]))
return date_dt + timedelta(days=1) # 延后一天易于比较
def file_iterator(file_name, chunk_size=8888):
"""获取文件流迭代器"""
with open(file_name, "rb") as f:
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break
def handle_messy_code(content):
"""解决文字乱码"""
try:
content_bytes = bytes(content)
chinese_str = content_bytes.decode('unicode_escape').encode('latin1').decode('utf-8')
return chinese_str
except UnicodeDecodeError as e:
pass