import base64 import calendar import datetime import hashlib import hmac import os import random import time from urllib import parse import requests def get_md5_01(file_path): md5 = None if os.path.isfile(file_path): f = open(file_path, 'rb') md5_obj = hashlib.md5() md5_obj.update(f.read()) hash_code = md5_obj.hexdigest() f.close() md5 = str(hash_code).lower() return md5 def createTransaction(HTTPMethod, filePath): fileName = filePath.split('/')[-1] for Version in getBetweenDay('2017-01-01'): print("Version={Version}".format(Version=Version)) param = { "Format": "JSON", "Version": Version, "AccessKeyId": "LTAIeS8aBuPBZxV2", "SignatureMethod": "HMAC-SHA1", "Timestamp": int(time.time()), "SignatureVersion": "1.0", "SignatureNonce": random.randint(0, 9), "Action": "CreateTransaction", "Ext": fileName[-fileName[::-1].index('.'):], "Md5": get_md5_01(filePath), "Size": os.path.getsize(filePath) } AccessKeySecret = b'hyPeTaDQBQs6jetYcqY0BUdpacXTH3' canonicalQueryString = '' for i in sorted(param.items(), key=lambda d: d[0]): canonicalQueryString += '&' + i[0] + parse.quote('=' + str(i[1])) # print(canonicalQueryString[1:]) strUrlEncoding = HTTPMethod + '&%2F&' + canonicalQueryString[1:] print(strUrlEncoding) stringToSign = base64.b64encode(hmac.new(AccessKeySecret, strUrlEncoding.encode('UTF-8'), 'sha1').digest()) server = 'https://cloudphoto.cn-shanghai.aliyuncs.com' url = server + "?" + canonicalQueryString[1:] + '&Signature=' + stringToSign.decode('utf-8').replace('+','%20').replace('/','%2F').replace('=','%3D') print(url) result = requests.get(url) if result.status_code == 200: break else: print(result.content) time.sleep(1) def getBetweenDay(begin_date): date_list = [] begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d") end_date = datetime.datetime.strptime(time.strftime('%Y-%m-%d', time.localtime(time.time())), "%Y-%m-%d") while begin_date <= end_date: date_str = begin_date.strftime("%Y-%m-%d") date_list.append(date_str) begin_date += datetime.timedelta(days=1) return date_list if __name__ == '__main__': createTransaction("GET", "C:/Users/10295/Desktop/灵梦.png") # print(getBetweenDay('2017-01-01'))